JavaScript null 关键字
最后修改于 2025 年 4 月 16 日
在本文中,我们将探讨 JavaScript 中的 null
关键字,它表示任何对象值的有意缺失。我们将通过实际例子来研究它的行为和用法。
null 关键字
null
关键字是一个原始值,表示任何对象值的有意缺失。它是 JavaScript 的原始类型之一,与 undefined、boolean、number、string 和 symbol 一起。
null
经常用于指示一个变量不应该有任何值,或者一个对象属性应该为空。它与 undefined 不同,undefined 表示一个变量已经被声明但未被赋值。
在类型检查中,由于 JavaScript 的历史 bug,null
返回 "object"。这可能会令人困惑,但在编写代码中的类型检查时记住这一点很重要。
基本 null 赋值
使用 null 的最简单方法是将其赋值给一个变量。
let user = null; console.log(user); // null console.log(typeof user); // object
这里我们将 null 赋值给 user 变量。当被记录时,它显示为 null,但它的类型被报告为 "object"。这展示了 null 在 JavaScript 类型系统中的特殊行为。
$ node main.js null object
检查 null
要检查一个值是否为 null,请使用严格相等 (===)。
let data = null; if (data === null) { console.log('Data is null'); } else { console.log('Data has a value'); }
此示例展示了检查 null 值的正确方法。使用 == 也会匹配 undefined,这通常不是我们想要的。严格相等运算符确保我们只匹配 null。
$ node main.js Data is null
Null vs undefined
Null 和 undefined 类似,但有重要的区别。
let var1 = null; let var2; console.log(var1); // null console.log(var2); // undefined console.log(var1 == var2); // true console.log(var1 === var2); // false
这演示了 null 和 undefined 的比较。它们使用 == 比较相等,但使用 === 比较不相等。Undefined 意味着“未赋值”,而 null 意味着“有意没有值”。
$ node main.js null undefined true false
Null 在对象属性中
Null 经常用于清除对象属性。
let person = { name: 'John', age: 30, address: null }; console.log(person.address); // null person.address = '123 Main St'; console.log(person.address); // 123 Main St person.address = null; console.log(person.address); // null
这里我们使用 null 来表示 address 属性是有意为空的。我们稍后可以分配一个真实的值或将其设置回 null。这是可选对象属性的常见模式。
$ node main.js null 123 Main St null
Null 作为函数返回值
函数可以返回 null 以表示没有有效结果。
function findUser(id) { // Simulate not finding a user return null; } let user = findUser(123); if (user === null) { console.log('User not found'); }
这种模式在搜索数据的函数中很常见。返回 null 清楚地表明没有找到结果,与 undefined 不同,后者可能暗示错误或函数未正确实现。
$ node main.js User not found
Null 在默认参数中
Null 可以与默认参数一起使用,以区分缺失值和 null 值。
function greet(name = 'Guest') { if (name === null) { console.log('Hello Anonymous'); } else { console.log(`Hello ${name}`); } } greet(); // Hello Guest greet(null); // Hello Anonymous greet('John'); // Hello John
这里我们以与省略参数不同的方式处理 null。默认值仅在参数为 undefined 时才适用,而不是在它被明确设置为 null 时适用。这允许更精确的参数处理。
$ node main.js Hello Guest Hello Anonymous Hello John
Null 在 JSON 中
Null 在 JSON 中被正确序列化,而 undefined 则不然。
let data = { name: 'Alice', age: null, score: undefined }; let json = JSON.stringify(data); console.log(json); // {"name":"Alice","age":null}
当转换为 JSON 时,null 值被保留,而未定义的属性被省略。这表明 null 是一个有效的 JSON 值,而 undefined 不是 JSON 规范的一部分。
$ node main.js {"name":"Alice","age":null}
来源
在本文中,我们已经演示了如何使用 null 关键字来表示 JavaScript 中值的有意缺失。