gpt4 book ai didi

javascript - JavaScript 中的全局变量,没有 var 定义的变量

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

下面的函数将返回 b is not defined 因为编译器会在函数中查找然后进入全局范围以搜索变量 b

但是,我假设定义 b 时不使用 var 会自动创建一个全局变量?

谁能解释一下省略var这个词的规则?

function foo(a) {    
console.log( a + b );
b = a;
}

foo( 2 );

最佳答案

在变量声明的函数中不使用 var 确实使其成为全局变量,但在您的情况下,JavaScript 引擎正在命中这一行:

console.log( a + b );

在它到达这一行之前:

b = a;

而且,这是声明它的行(全局)。

而且,因为您没有使用 var,所以声明不会被提升到代码库的顶部(如果是 var,您会仍然没有得到 b 的值,因为只有声明会被提升,而不是初始化,但它不会抛出错误),所以你得到了你的错误。

查看更多关于 var 和提升 here .

关于javascript - JavaScript 中的全局变量,没有 var 定义的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41245759/

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