在 JavaScript 中,null
和 undefined
都表示“没有值”或“值不存在”,但它们有一些重要区别:
1. 含义不同
undefined
:表示一个变量已声明,但尚未赋值。null
:表示一个变量已声明,并且赋值为“空”或“无值”。
2. 类型不同
typeof undefined
:返回"undefined"
typeof null
:返回"object"
(这其实是一个历史遗留的 Bug)
3. 赋值方式不同
undefined
:通常是变量未初始化时的默认值,或者手动赋值为undefined
。let a; console.log(a); // undefined let b = undefined; console.log(b); // undefined
null
:通常是有意将变量赋值为空,以表示“没有对象”或“值为空”。let c = null; console.log(c); // null
4. 比较不同
null == undefined
:返回true
,因为它们在非严格比较时被认为是相等的。null === undefined
:返回false
,因为类型不同。
5. 常见用途
undefined
:表示未初始化的变量、未定义的属性或函数没有返回值。null
:表示对象为空、手动清除对象引用或赋值为空。
示例对比
let x;
console.log(x); // undefined
let y = null;
console.log(y); // null
console.log(x == y); // true
console.log(x === y); // false
总结
undefined
是 JavaScript 自动赋值的,表示“未定义”或“缺失”。null
是开发者主动赋值的,表示“空”或“无”。- 如果是要表示一个变量明确为空,应该使用
null
。 - 如果要判断是否有值或变量未初始化,可以使用
undefined
。
创作不易,欢迎点赞收藏加关注