以此为例。
if (b) b = 1;
引用错误。 b 没有定义。有道理,但如果我这样做...
if (b) var b = 1;
我在控制台中未定义。现在,当我查找 b 是什么时,它显示为未定义。
如果我尝试再次执行相同的 if 语句,它不会通过,因为 b 既不是 true 也不是 false,它是未定义的,但我想我的问题是为什么它显示为未定义?无论 if 语句通过还是失败,Javascript 都会执行 if 语句吗?谢谢。
最佳答案
所有var
都被提升到它们所在作用域的开头,将它们的值初始化为undefined
。当执行到达 var
最初所在的行时,该值就会被设置。
在第二个示例中,由于 var
在遇到 if
之前,b
被初始化为 undefined
>。将其视为与编写以下内容相同
var b;
if (b) b = 1;
执行此代码后,b
仍将是undefined
,因为它永远不会遇到if
block ,因为初始值为< em>虚假。
正如pst所述,这是 JavaScript 的特定于语言的功能,因此在用其他语言编写代码时不要期望有相同的行为。
关于javascript - 为什么 Javascript 变量即使没有通过 if 语句,也会被创建为未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14490326/