JavaScript null 语法
null 是 JavaScript 中的一个基本数据类型,它表示一个有意为之的 “空值” 。
语法:
const 变量名 = null;说明:
与 undefined 不同,undefined 表示一个变量未被赋值,而 null 则是主动给变量赋一个空值。
注意: null 值的类型为 object,这是一个 JavaScript 历史遗留的一个 bug。typeof null 会返回 "object",而不是 "null"。因此在实际开发中,如果想要判断一个值是否为 null,最可靠的方法是使用 “===(严格相等)” 运算符。
JavaScript null 摘要
| 属于 | JavaScript 数据类型 |
|---|---|
| 使用频率 | 高 |
| 官方文档 | 查看 |
| MDN | 查看 |
JavaScript null 示例
接下来,我们通过几个简单的例子来讲解一下 JavaScript null 是如何使用的。
示例 1:null 基本用法
const user = null;
console.log(user);
console.log(typeof user);
console.log(user === null);运行结果如下。
null
object
true分析:
在这个例子中,我们将 user 变量的值显式声明为 null。尽管 typeof 运算符返回了 "object",但使用 “===” 是可以正确判断出该变量的值就是 null 的。
示例 2:清空变量的值
let user = { "name": "Jack" };
console.log(user);
// 假设用户退出登录,我们清空 user 变量
user = null;
console.log(user);运行结果如下。
{ name: 'Jack' }
null分析:
user 变量在开始时引用了一个对象。当我们将 user 重新赋值为 null 时,它就不再引用那个对象了,这点在内存管理方面非常有用。当我们不再需要某个对象时,将其引用设置为 null,这样可以让垃圾回收机制释放其所占用的内存。
null 与 undefined 的区别
与其他语言不一样,JavaScript 使用了两个值来表示 “空”:null 是一个表示 “无” 的基本类型(尽管 typeof 会返回 "object"),而 undefined 也是一个表示 “无” 的基本类型。它们之间的区别如下。
- undefined 代表变量已被声明,但尚未被赋值。而 null 代表内存是存在该变量的,只是暂时设置为空而已。
- undefined 转为数值是 NaN,而 null 转为数值是 0。
- 使用 typeof 判断 undefined,返回的是 undefined(它属于基本类型之一);而使用 typeof 判断 null,返回的是 object。
对于 undefined 和 null 的使用,我们需要清楚以下 2 点。
- 想要判断某个变量有值,应该使用 undefined,比如 if(xxx===undefined){}。
- 想要设置一个初始的空值(如定时器),可以使用 null,比如 let timer=null;。
示例 3:null vs undefined
console.log(null === undefined);
console.log(null == undefined);
console.log(typeof null);
console.log(typeof undefined);运行结果如下。
false
true
object
undefined分析:
typeof null 返回 "object",这是 JavaScript 语言的一个历史遗留 bug,小伙伴们不用纠结太多。因此在实际开发中,我们应该使用 “===(严格相等)” 来区分 null 和 undefined。
实际上,null 和 undefined 虽然都可以表示 “空值”,但它们在类型和语义上是不同的。
