gpt4 book ai didi

javascript - 无法从全局上下文中读取变量

转载 作者:行者123 更新时间:2023-12-03 09:37:48 25 4
gpt4 key购买 nike

JS:

var a = 10;

function test() {
alert(a);
var a = 20;
alert(a);
}

test();

上面的代码昨天和面试官讨论过,我说第一次浏览器会提示 10,下次会提示 20,但我错了。它第一次警告未定义,第二次警告 20。我很困惑,任何人都可以从理论上和实践上解释这背后的原因..?

相关链接会很有帮助。

DEMO

最佳答案

在函数中,每个 var 都被视为出现在函数的最顶部。因此,您的代码被解释为就好像它是这样写的:

function test() {
var a;
alert(a);
a = 20;
alert(a);
}

这叫做提升。请注意,提升的是声明,而不是初始化赋值。

这里的效果是,在该函数的任何地方,a 都引用局部变量,它隐藏了相对全局的 a 不可见。

Here is the relevant section of the ES5 spec.它有点不透明。

关于javascript - 无法从全局上下文中读取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24597512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com