未定义的!== undefined?

阅读时长 3 分钟读完

在 JavaScript 中,我们经常会遇到“未定义”的情况。在这种情况下,我们通常会使用 undefined 值来表示变量或表达式未被设置或初始化。然而,当我们试图比较一个值是否等于 undefined 时,可能会遇到一些奇怪的问题。本文将探讨这个话题,并为您提供指导意义和示例代码。

“未定义”与 undefined

在 JavaScript 中,当一个变量或表达式没有被设置或初始化时,它被认为是“未定义”的。例如:

上面的代码中,变量 foo 被声明但未被初始化,因此它被认为是“未定义”的。当我们尝试打印它的值时,输出结果为 undefined

在 JavaScript 中,undefined 是一个特殊的值,用于表示变量或表达式未被设置或初始化。如果一个变量的值确实为 undefined,则它被认为是已定义的,但未被初始化。例如:

在上面的代码中,变量 bar 被赋予了 undefined 值。虽然这个变量的值是 undefined,但我们仍然认为它是已定义的,但未被初始化。

“未定义”与 null

除了 undefined 值之外,JavaScript 还有一个特殊的值 null。这个值表示一个对象被设置为“没有值可用”。在某些情况下,null 也可以用来表示一个变量或表达式没有被设置或初始化。例如:

在上面的代码中,变量 baz 被赋予了 null 值。虽然这个变量的值是 null,但我们仍然认为它是已定义的,但未被初始化。

“未定义”与 != undefined

当我们想要检查一个变量或表达式是否等于 undefined 时,通常会使用比较运算符 =====。然而,有些开发人员可能会尝试使用不等于运算符 != 来比较一个值是否等于 undefined,如下所示:

在上面的代码中,我们尝试检查变量 qux 是否等于 undefined,使用的是不等于运算符 !=。然而,这种方式可能会导致一些奇怪的问题。

事实上,!= undefined 表达式在 JavaScript 中并不等价于 === undefined。相反,它等价于 != null。这是因为 JavaScript 在进行类型转换时会将 undefinednull 视为相同的值。

因此,上面的代码实际上检查的是变量 qux 是否等于 null。如果变量 qux 未被设置或初始化,则它将被认为是“未定义”的,而不是 null,因此上述代码将输出 qux 未定义

如何正确地检查“未定义”

要正确地检查一个变量或表达式是否等于 undefined,应该使用全等运算符 ===,如下所示:

在上面的代码中,我们使用全等运算符 === 来比较变量 `qux

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/12797

纠错
反馈