在 JavaScript 中,null
和 undefined
都表示空值,但它们有着不同的含义和用途。
undefined
表示不存在、未定义或者缺失。它是一个原始数据类型,在以下情况下会出现:
- 变量被声明但没有赋值
- 访问对象属性不存在或未定义
- 函数参数未传递
而 null
表示一个对象为空或者不存在,它也是一个原始数据类型。null
在下列情况下出现:
- 把定义了的变量赋值为 null
- 用对象获取不到值时返回 null
- 当函数要返回对象但是暂时没有可以返回的对象时,可以返回 null 作为哨兵值。
总结区别:
undefined
表示未定义或未初始的值,null
表示一个空对象指针。undefined
是 JavaScript 语言中的关键字,而null
是 JavaScript 语言中的特殊关键字。- 对于声明但是未赋值的变量,默认的值为
undefined
,但是 null 需要进行显式赋值。 - 在使用
==
进行比较时,它们会相互转换成 Boolean 类型值,undefined
转换为false
,null
转换为false
。 - 在使用
===
进行比较时,除了两者的值相等,它们与其它类型值永远不相等,因为它们类型不同。