以此为例。
if (b) b = 1;
参考错误。 b 没有定义。有道理,但如果我这样做......
if (b) var b = 1;
我在控制台中未定义。现在,当我查找 b 是什么时,它显示为未定义。
如果我尝试再次执行相同的 if 语句,它不会通过,因为 b 既不是 true 也不是 false,它是未定义的,但我想我的问题是为什么它显示为未定义?无论 if 语句通过还是失败,Javascript 都会执行 if 语句吗?谢谢。
All var
s 被提升到它们所在范围的开头,将它们的值初始化为undefined
。然后当执行到达行时设置该值var
原来是在.
在你的第二个例子中,b
被初始化为undefined
之前if
遇到的是,由于var
。将其视为与编写以下内容相同
var b;
if (b) b = 1;
这段代码执行后,b
仍将是undefined
因为它永远不会遇到if
块的初始值为falsy.
正如所提到的pst,这是特定于语言的featureJavaScript 的行为,因此在用其他语言编写代码时不要期望有相同的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)