繁体   English   中英

为什么即使不通过 if 语句也会创建未定义的 Javascript 变量?

[英]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最初所在的行时设置该值。

在您的第二个示例中,由于varb在遇到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM