原文: JS Check for Null – Null Checking in JavaScript Explained

null 是 JavaScript 中的一个原始类型。这意味着你应该能够用 typeof() 方法来检查一个变量是否为 null。但不幸的是,由于一个无法修复的历史错误,这个方法返回的是 “object”。

let userName = null;

console.log(typeof(userName)); // object

那么,你现在如何检查 null 呢?本文将教你如何检查 null,以及 JavaScript 类型 null 和 undefined 的区别。

JavaScript 中的 null 与 undefined

在 JavaScript 中,null 和 undefined 是非常相似的,都是原始类型。

如果一个变量包含 null 值,它的类型就是 null。相反,当你声明一个变量而没有初始化一个值时,它的类型是 undefined

// 这是 null
let firstName = null;

// 这是 undefined
let lastName;

undefined 的效果很好,因为当你使用 typeof() 方法检查类型时,它将返回 undefined

let lastName;

console.log(typeof(lastName)); // undefined

现在让我们看看检查 null 的两种主要方式,以及它与 undefined 的关系。

如何在 JavaScript 中用相等运算符检查 null

相等运算符提供了检查 null 的最好方法。你可以使用宽松/两个相等运算符(==)或严格/三个相等运算符(===)。

如何使用宽松相等运算符来检查 null

你可以使用宽松相等运算符来检查 null 值:

let firstName = null;

console.log(firstName == null); // true

但是,这可能有点问题,因为如果变量是未定义的,它也会返回 true,因为 nullundefined 都是宽松相等。

let firstName = null;
let lastName;

console.log(firstName == null); // true
console.log(lastName == null); // true
console.log(firstName == undefined); // true
console.log(lastName == undefined); // true
console.log(firstName == lastName); // true
console.log(null == undefined); // true

注意:当你想检查一个变量是否没有值时,这可能很有用,因为当一个变量没有值时,它可能是 nullundefined

但是,如果你只想检查 null - 那么你可以使用严格相等运算符。

如何使用严格相等运算符来检查 null

与宽松相等运算符相比,严格相等运算符只有在你正好有一个 null 值时才会返回 true。否则,它将返回 false(这包括 undefined)。

let firstName = null;
let lastName;

console.log(firstName === null); // true
console.log(lastName === null); // false
console.log(firstName === undefined); // false
console.log(lastName === undefined); // true
console.log(firstName === lastName); // false
console.log(null === undefined); // false

正如你所看到的,只有当空变量与 null 比较时,以及未定义变量与 undefined 比较时,返回 true

如何用 Object.is() 方法检查 JavaScript 中的 null

Object.is() 是一个 ES6 方法,用于确定两个值是否相同。它的原理类似于严格相等运算符。

// 语法
Object.is(value1, value2)

让我们利用前面的例子,看看它是否像严格相等运算符那样工作:

let firstName = null;
let lastName;

console.log(Object.is(firstName, null)); // true
console.log(Object.is(lastName, null)); // false
console.log(Object.is(firstName, undefined)); // false
console.log(Object.is(lastName, undefined)); // true
console.log(Object.is(firstName, lastName)); // false
console.log(Object.is(null, undefined)); // false

发生这种情况是因为它只在两个值相同时返回 true。这意味着只有当设置为 null 的变量与 null 比较时,以及未定义的变量与 undefined 比较时,它才会返回 true

总结

现在你知道如何检查 null 了。你还可以检查一个变量是否被设置为 nullundefined,你也知道了宽松和严格相等运算符之间的区别。

我希望这篇文章对你有帮助,happy coding!