通过一个有趣的示例了解 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中文网其他相关文章!