在 JavaScript 中,我们经常会遇到“未定义”的情况。在这种情况下,我们通常会使用 undefined
值来表示变量或表达式未被设置或初始化。然而,当我们试图比较一个值是否等于 undefined
时,可能会遇到一些奇怪的问题。本文将探讨这个话题,并为您提供指导意义和示例代码。
“未定义”与 undefined
在 JavaScript 中,当一个变量或表达式没有被设置或初始化时,它被认为是“未定义”的。例如:
let foo; console.log(foo); // 输出: undefined
上面的代码中,变量 foo
被声明但未被初始化,因此它被认为是“未定义”的。当我们尝试打印它的值时,输出结果为 undefined
。
在 JavaScript 中,undefined
是一个特殊的值,用于表示变量或表达式未被设置或初始化。如果一个变量的值确实为 undefined
,则它被认为是已定义的,但未被初始化。例如:
let bar = undefined; console.log(bar); // 输出: undefined
在上面的代码中,变量 bar
被赋予了 undefined
值。虽然这个变量的值是 undefined
,但我们仍然认为它是已定义的,但未被初始化。
“未定义”与 null
除了 undefined
值之外,JavaScript 还有一个特殊的值 null
。这个值表示一个对象被设置为“没有值可用”。在某些情况下,null
也可以用来表示一个变量或表达式没有被设置或初始化。例如:
let baz = null; console.log(baz); // 输出: null
在上面的代码中,变量 baz
被赋予了 null
值。虽然这个变量的值是 null
,但我们仍然认为它是已定义的,但未被初始化。
“未定义”与 != undefined
当我们想要检查一个变量或表达式是否等于 undefined
时,通常会使用比较运算符 ==
或 ===
。然而,有些开发人员可能会尝试使用不等于运算符 !=
来比较一个值是否等于 undefined
,如下所示:
let qux; if (qux != undefined) { console.log("qux 已定义"); } else { console.log("qux 未定义"); }
在上面的代码中,我们尝试检查变量 qux
是否等于 undefined
,使用的是不等于运算符 !=
。然而,这种方式可能会导致一些奇怪的问题。
事实上,!= undefined
表达式在 JavaScript 中并不等价于 === undefined
。相反,它等价于 != null
。这是因为 JavaScript 在进行类型转换时会将 undefined
和 null
视为相同的值。
因此,上面的代码实际上检查的是变量 qux
是否等于 null
。如果变量 qux
未被设置或初始化,则它将被认为是“未定义”的,而不是 null
,因此上述代码将输出 qux 未定义
。
如何正确地检查“未定义”
要正确地检查一个变量或表达式是否等于 undefined
,应该使用全等运算符 ===
,如下所示:
let qux; if (qux === undefined) { console.log("qux 未定义"); } else { console.log("qux 已定义"); }
在上面的代码中,我们使用全等运算符 ===
来比较变量 `qux
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/12797