透過一個有趣的範例來了解JavaScript 提升與作用域
在最近的一篇文章中,Ben Cherry 闡明了JavaScript 有趣的提升和作用域概念。為了說明這一點,他提供了以下程式碼:
var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a);
期望與現實
直觀上,人們可能會期望警報顯示“10”,因為函數在b 內聲明。然而,瀏覽器卻顯示「1」。
深入研究提升和作用域
提升是一種將函數移到其作用域頂部的現象。這表示解譯器會重寫以下程式碼:
function b() { a = 10; return; function a() {} }
有趣的是,JavaScript 也允許使用語法 function a() {} 在函數內宣告變數。這相當於 var a = function () {};。
理解執行序列
程式碼的基本功能如下:
因此,alert顯示“1”而不是“10”,因為全域變數 a 不受函數內局部變數 a 所做的變更的影響。
以上是為什麼此 JavaScript 程式碼警報「1」而不是「10」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!