JavaScript 變數提升:揭開未定義全域變數的神祕面紗
使用JavaScript 變數時,很容易遇到令人驚訝的行為。一個這樣的例子是當全域變數在某個特定範圍內似乎具有未定義的值時函數。
範例:
var value = 10; function test() { console.log(value); // A var value = 20; console.log(value); // B } test();
輸出:
undefined 20
解釋:
解釋:
在點
Avar value; function test() { console.log(value); // undefined value = 20; console.log(value); // 20 },程式列印局部值變量,尚未初始化。
在B
點,程式正確列印新初始化的局部變數的值。實際上,程式碼的行為就像寫成:
附註:函數宣告也會經歷提升。這就是為什麼您可以在聲明之前呼叫函數,這與變數賦值不同。 結論:使用 JavaScript 變數時應考慮變數提升。透過了解這種行為,開發人員可以避免程式碼中出現意外的未定義值。此外,Ben Cherry 的「JavaScript 作用域和提升」等資源可以提供對 JavaScript 這一基本面向的進一步見解。以上是為什麼我的全域 JavaScript 變數在函數內部未定義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!