JavaScript 預解析
阿新 • • 發佈:2020-09-17
JavaScript 程式碼是由瀏覽器中的 JavaScript 解析器來執行的。
JavaScript 解析器在執行 JavaScript 程式碼的時候分為兩步:
預解析和程式碼執行。
-
預解析:在當前作用域下, JS 程式碼執行之前,瀏覽器會預設把帶有 var 和 function 宣告的變數在記憶體中進行提前宣告或者定義,預解析也叫做變數、函式提升。
-
程式碼執行: 從上到下執行JS語句。
注意:預解析會把變數和函式的宣告在程式碼執行之前執行完成。
2 變數預解析
變數的宣告會被提升到當前作用域的最上面,變數的賦值不會提升。
console.log(num); //結果是多少? var num = 10; // ?
結果:undefined
注意:變數提升只提升宣告,不提升賦值
3 函式預解析
函式的宣告會被提升到當前作用域的最上面,但是不會呼叫函式。
fn(); function fn() { console.log('列印'); }
結果:控制檯列印字串 --- ”列印“
注意:函式宣告代表函式整體,所以函式提升後,函式名代表整個函式,但是函式並沒有被呼叫!
4 函式表示式宣告函式問題
函式表示式建立函式,會執行變數提升
fn(); var fn = function() { console.log('想不到吧'); }
結果:報錯提示 ”fn is not a function"