前言
JS的作者Brendan Eich曾说过两者的区别:
null means “no object”, undefined => “no value”.Really it’s an abstraction leak:null and objects shared a Mocha type tag.
翻译后: null 表示“没有对象”,undefined 表示“没有值”。实际上这是一个抽象漏洞:null和objects共享一个Mocha类型标记。
Brendan Eich表示这是一个漏洞,即null和objects通用一个类型标记,所以打印null类型时伟object。
undefined
表示当前没有值
,但是未来可能为任意类型的值。
出现情况:
- 函数无返回值
- 读取的变量未赋初始值
- 读取对象中的某个不存在的属性
null
表示无对象
出现情况:
- 获取不存在的dom元素对象
总结
-
undefined表示没有
值
,null表示无对象
。 -
当声明变量却未赋初始值时,为undefined。
-
声明变量时,如果该变量可以为任意数据类型,可以将初始值赋为undefined,如果确定为对象,可以将初始值赋为null。