1. 程式人生 > 實用技巧 >JavaScript 預解析

JavaScript 預解析

預解析

1 預解析的相關概念

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"

解釋:該段程式碼執行之前,會做變數宣告提升,fn在提升之後的值是undefined;而fn呼叫是在fn被賦值為函式體之前,此時fn的值是undefined,所以無法正確呼叫