變數或函式 提升
阿新 • • 發佈:2022-03-03
-
變數提升
console.log(fn) //輸出:undefined var fn = 12
變數提升,是把變數提升提到函式上邊,注意:變數提升 只提升變數的宣告,不會把賦值也提升上來
所以,正兒八經的情況是這樣的...var fn; // 先宣告 console.log(fn) fn = 12 //執行時才賦值
- 函式提升(兩種方式:1. 函式表示式2.函式宣告式)
1.函式表示式提升
console.log(fn()) //輸出:TypeError: fn is not a function var fn = function(){ console.log(2) }
函式表示式方式提升和普通變數提升一樣,只宣告不賦值
2.函式宣告式提升
console.log(fn()) //輸出:1 //函式宣告 function fn(){ console.log(1) }
函式宣告方式提升,會提升到作用域最前邊,並且將宣告內容一起提升到最上邊 總結: 1. 所有的宣告都會提升到作用域的最頂上去
2. 同一個變數只會宣告一次,其他的會被忽略掉或者覆蓋掉
3. 函式宣告的優先順序高於變數宣告的優先順序,並且函式宣告和函式定義的部分一起被提升