變數提升(hoisting)

ladybug7發表於2024-06-08

JavaScript 引擎的工作方式是,先解析程式碼,獲取所有被宣告的變數,然後再一行一行地執行。這造成的結果,就是所有變數的宣告語句,都會被提升到程式碼的頭部,這就叫做變數提升(hoisting)。

console.log(a); // undefined
var a = 1;

上面的程式碼首先使用 console.log 方法,在控制檯顯示變數 a 的值。這時變數 a 還沒有宣告和賦值,應該會報錯,但實際上不會報錯。因為存在變數提升,真正執行的是下面的程式碼。

var a;
console.log(a);
a = 1;

最後的結果是顯示 undefined,表示變數 a 已經宣告,但還未賦值。

相關文章