为什么Javascript变量是未定义创建的,即使它们没有传递if语句?

时间:2013-01-23 22:09:42

标签: javascript variables if-statement

以此为例。

if (b) b = 1;

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

if (b) var b = 1;

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

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

2 个答案:

答案 0 :(得分:3)

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

在您的第二个示例中,由于bundefined在遇到if之前被初始化为var。可以认为它与编写以下内容相同

var b;
if (b) b = 1;

执行此代码后,b仍为undefined,因为它永远不会进入if块,因为初始值为 falsy 。< / p>

pst所述,这是JavaScript的特定于语言的功能,因此在使用其他语言编写代码时不要指望相同的行为。

答案 1 :(得分:0)

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