gpt4 book ai didi

javascript - 变量提升 - "var"函数中有全局变量名

转载 作者:行者123 更新时间:2023-11-30 08:04:04 25 4
gpt4 key购买 nike

我正在练习一些场景并找到一个案例:

Here is fiddle

根据闭包条函数应该可以访问 var x 所以我希望警告 1 并且由于 if(!1) 而条件变为 false 但是它警告了 undefined 并且条件为真,第二个警报的值为 10。

var x = 1;
function bar() {
alert(x);
if (!x) {
var x = 10;
}
alert(x);
}
bar();

所以我很疑惑为什么会提示undefined?

根据特定范围内的提升,您可以在任何被认为始终定义在顶部的位置定义一个变量。

如果是由于提升效应,它仍然必须警告 10 而不是 undefined。

最佳答案

提升导致变量在函数的任何地方声明,而不是定义。

bar的第一行,由于函数的第3行有var x,全局的x被屏蔽了,你查看本地 x(它是 undefined,因为它还没有被赋值)。

bar 的第 3 行,您有 x = 10 来定义变量。这不是吊装。

在第 5 行,您提醒它,它现在已定义。

Venn Diagram of the above

关于javascript - 变量提升 - "var"函数中有全局变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21096904/

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