有时你必须检查以确保什么都不是……什么都没有。😲❗❓
在 JavaScript 中,null是一种原始类型,有意包含 null 值。Undefined是一种原始类型,表示您在没有初始化值的情况下声明的变量。
所以, null 什么都不是, undefined 只是缺少一些东西。🤗
不是很有帮助,我知道。让我们深入探讨。
如何定义空值和未定义值
一个例子会有所帮助。下面我们声明两个变量。让我们保持简单并使用null和undefined比较结果,因为它们有时会因为相似性而混淆。
let leviticus = null;
// leviticus is null
let dune;
// dune is undefined
声明两个变量:一个为空,一个为未定义。
leviticus有意没有对象值 ( null )。虽然dune已声明,但它无意中遗漏了一个值(未定义)。
如何检查空值typeof()
您可以使用 JavaScript 中的运算符检查 null typeof()。
console.log(typeof(leviticus))
// object
console.log(typeof(dune))
// undefined
typeof() 在空变量上调用时将返回“object”
奇怪的是,如果您使用 进行检查typeof(),则会返回一个空变量object。这是因为 JavaScript 中的一个历史错误。
如何使用相等运算符检查空值
另一个好奇心是,当您使用双等号 松散地检查相等性时==,null将undefined返回true。
console.log(leviticus == dune)
// true
console.log(leviticus === dune)
// false
console.log(leviticus == null)
// true (but not as good a habit to use as strict equality shown in next example)
但是,当您使用三等号 严格检查相等性时===,将返回 null 和 undefined false。
这是因为 null 和 undefined 在 JavaScript 中都是假的。falseFalsy 表示在布尔 (true或) 上下文中遇到值时被考虑false。
JavaScript 使用强制转换将值从一种类型强制转换为另一种类型,以便能够在布尔上下文中使用它们。
但是通过严格检查相等性,您可以看到它们实际上是不相等的。
如何使用严格相等检查 Null
检查 null 的最佳方法是使用严格和明确的相等性:
console.log(leviticus === null)
// true
console.log(dune === null)
// false
Object.is()如何使用方法检查 Null
检查 null 的一种同样简单的方法是使用内置Object.is()方法:
console.log(Object.is(leviticus, null)
// true
console.log(Object.is(dune, null)
// false
概括
null是一个原始类型的变量,其计算结果为 falsy,具有一个typeof()对象,通常有意声明为null
undefined是一个原始类型的变量,其计算结果为 falsy,具有typeof()未定义的值,并表示已声明但缺少初始值的变量。
null == undefined评估为真,因为它们大致相等。
null === undefined评估为 false 因为它们实际上不相等。
<null_variable> === null是严格检查 null 的最佳方法。
Object.is(<null_variable>,null)是检查 null 的同样可靠的方法。
振作起来!您可能已经了解到,在 JavaScript 生态系统中有大量这样的脑筋急转弯。但是当你分解它时,你可以自信地理解它们/
谢谢阅读!
我希望这对您有所帮助。继续编码,继续前倾!