javascript - 为什么 Javascript 变量即使没有通过 if 语句,也会被创建为未定义?

标签 javascript variables if-statement

以此为例。

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/

相关文章:

javascript - 在 Typescript 中使用 If-instanceof-statements 是不是很糟糕?

javascript - 为什么 jquery 不能准确地为数字设置动画?

javascript - 计算两个日期之间的天数,不包括星期日和 Javascript 中的一组假期

javascript - 单击带有 img 和文本的 div 上的单击事件在单击 img 时不会触发

c - 如何从C字符串中获取第一个字母?

java - 创建具有字符串格式的 Java 字符串变量

javascript - 坏 masonry 元素 : null - using wordpress

javascript - 插入 javascript 变量作为背景图像源

Java对如何排列 "if"语句感到困惑

C#统一if语句逻辑