gpt4 book ai didi

javascript - 为什么 {var foo = foo} 不抛出 ReferenceError?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:26:24 24 4
gpt4 key购买 nike

为什么 var foo = foo 不抛出 ReferenceError

注意:foo = foo 会抛出一个 ReferenceError

最佳答案

当你声明

var foo = ...

您声明整个作用域的变量(如果不是全局的,就是您的函数),而不仅仅是之后的代码,这与其他语言相反。

所以在赋值的右边部分,foo 已经被声明了,即使它仍然是undefined。没有引用错误。

请注意,javascript 中 var 声明的这个属性可能是错误的来源。因为您很可能拥有(更复杂的)这种代码:

if (true) {
var a = 3; // do you think this is "local" ?
}
var a;
alert(a); // a is 3, did you expect it ?

关于javascript - 为什么 {var foo = foo} 不抛出 ReferenceError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057475/

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