JavaScript 預決議
1.預決議
js引擎運行js代碼,分為兩步:預決議、代碼執行
1.預決議:js引擎會把js里面所有的var還有function提升到當前作用域的最前面
2.代碼執行:按照代碼書寫的順序從上往下執行
2.變數預決議(變數提升)和函式預決議(函式提升)
1.變數提升:就是把所有的變數宣告提升到當前的作用域最前面,不提升賦值操作
2.函式提升:就是把所有的函式宣告提升到當前作用域的最前面,不呼叫函式
3.案例分析
//問題1
console.log(num);
//問題2
console.log(num); // nudefined 坑1
var num = 10;
//相當于執行了以下代碼:
var num;
console.log(num);
num = 10;
//問題3
fn();
function fn(){
console.log(11);
}
//問題4
fun(); // 報錯 坑2
var fun = function(){
console.log(22);
}
//函式運算式呼叫必須寫在函式運算式的下面
//相當于執行了以下代碼:
var fun;
fun();
fun = function(){
console.log(22);
}
//案例
f1();
console.log(c);
console.log(b);
console.log(a);
function f1(){
var a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);
}
//相當執行了以下代碼:
function f1(){
var a = b = c = 9;
//相當于 var a = 9; b = 9; c = 9; b和c直接賦值,沒有var宣告,當全域變數看
//集體宣告:var a = 9, b = 9, c = 9;
console.log(a); // 結果是 9
console.log(b);// 結果是 9
console.log(c);// 結果是 9
}
f1();
console.log(c);// 結果是 9
console.log(b);// 結果是 9
console.log(a);// 結果是 undefined
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/503480.html
標籤:其他
