gpt4 book ai didi

javascript - 为什么javascript在第二种情况下不查找全局范围

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

在控制台执行时,foo 将按预期使用 2 查找 b 值

function foo() {
console.log(b)
}
var b = 2
foo() // 2 for console.log

但是当我这样做的时候

function foo() {
console.log(b)
var b = 2
console.log(b)
}
var b = 2
foo() // undefined for first console.log

为什么不再在全局范围内查找 b?

最佳答案

这是因为所谓的 Javascript 提升,这就是 javascript 看到你的代码的方式:

function foo() {
var b; // javascript hoisted this variable on top
console.log(b) // so here you see underfined
b = 2;
console.log(b);
}

现在因为 javascript 提升变量 b 在函数之上,你的全局变量 b 从未被使用,因此在提升变量显示 undefined 后立即声明>。因此,如果您从函数中删除新的声明(var 关键字),您应该仍然可以访问全局 b 变量。

顺便说一句,最好在函数之上声明所有变量,例如:

function foo() {
var b = 2;
console.log(b);
}

要了解有关该主题的更多信息,请参阅:

关于javascript - 为什么javascript在第二种情况下不查找全局范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27635283/

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