[英]Why is it that Javascript variables are created undefined even if they don't pass if statement?
以这个为例。
if (b) b = 1;
参考错误。 b 未定义。 有道理,但如果我这样做......
if (b) var b = 1;
我在控制台中未定义。 现在当我查找 b 是什么时,它显示为未定义。
如果我再次尝试执行相同的 if 语句,它不会通过,因为 b 既不是真也不是假,它是未定义的,但我想我的问题是为什么它显示为未定义? 无论 if 语句通过还是失败,Javascript 都会通过 if 语句吗? 谢谢。
所有var
都被提升到它们所在作用域的开头,将它们的值初始化为undefined
。 然后在执行到达var
最初所在的行时设置该值。
在您的第二个示例中,由于var
, b
在遇到if
之前被初始化为undefined
。 认为它与编写以下内容相同
var b;
if (b) b = 1;
执行此代码后, b
仍将是undefined
因为它永远不会遇到if
块,因为初始值为falsy 。
正如pst所提到的,这是 JavaScript 的语言特定功能,因此在用其他语言编写代码时不要期望相同的行为。
JS 不是通过 if 语句,而是读取语句的if
部分,并且由于b
不是在if
语句中的任何地方定义的,所以你会得到undefined
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.