[JS]讨论null和undefined的区分和使用场景

2026-01-01 00:37:30

JavaScript 中 null 和 undefined 的区别及使用场景1. 为什么存在 null 和 undefined在 JavaScript 中,null 和 undefined 是为了表示两种不同概念:

undefined:表示变量已声明,但尚未赋值。

null:表示变量已赋值,但特意赋为 “空值”。

2. 区别详解(1) 语义

undefined:表示变量已声明,但尚未初始化。

null:表示变量有意被赋值为空,通常用于表示对象引用的“空状态”。

(2) 类型

undefined 是原始值,属于 undefined 类型。

null 是原始值,属于 object 类型(这是一个历史遗留问题)。

12console.log(typeof undefined); // "undefined"console.log(typeof null); // "object"

(3) 比较

松散比较 ==:null==undefined为true,这是一个强制规定

严格比较 ===: null==undefined为false,因为类型不同

12console.log(null == undefined); // trueconsole.log(null === undefined); // false

3. 使用场景(1) 使用 undefined

undefined 通常由 JavaScript 自动分配,不需要显式赋值:

表示变量 “未被赋值”。

表示对象属性不存在。

表示函数参数未传递。

1234567891011121314// 变量未赋值let a;console.log(a); // 输出 undefined// 对象属性不存在let obj = {};console.log(obj.value); // undefined// 函数参数未传递function test(param) { console.log(param); // undefined}test();

(2) 使用 null

null 需要开发者主动赋值,用于表示 “空值” 或 “空对象”:

初始化一个变量,表示未来会赋值。

表示资源尚未分配或不需要时显式清空。

123456789// 初始化为空值let data = null;console.log(data); // null// 一开始未初始化对象let person = null;if (isDataReady()) { person = {name: "John"};}

4. 默认值为 undefined如果声明了变量但没有赋值,它的默认值为 undefined:

12var i;console.log(i); // undefined