2

以此为例。

if (b) b = 1;

参考错误。b 未定义。有道理,但如果我这样做......

if (b) var b = 1;

我在控制台中未定义。现在,当我查找 b 是什么时,它显示为未定义。

如果我尝试再次执行相同的 if 语句,它不会通过,因为 b 既不是真也不是假,它是未定义的,但我想我的问题是为什么它显示为未定义?无论 if 语句通过还是失败,Javascript 是否都会通过 if 语句?谢谢。

4

2 回答 2

3

所有vars 都被提升到它们所在范围的开头,将它们的值初始化为undefined. var然后在执行到达最初所在的行时设置该值。

在您的第二个示例bundefinedif由于var. 认为它与编写以下内容相同

var b;
if (b) b = 1;

这段代码执行后,b仍将是undefined因为它永远不会运行到if块中,因为初始值为falsy

正如pst所提到的,这是 JavaScript 的语言特定功能,因此在用其他语言编写代码时不要期望相同的行为。

于 2013-01-23T22:45:58.917 回答
0

JS 不会通过 if 语句,而是读取if语句的一部分,并且由于b没有在任何地方定义,而是在if语句中,所以你得到undefined.

于 2013-01-23T22:13:04.847 回答