- 相同点:
- 都表示值得空缺,二者往往可以互换,用“==”相等运算符判断两个是相等的,要用“===”判断。
- 在希望值是布尔类型的地方,他们的值都是假值,和“false”类似。
- 都不包含属性和方法。
- 使用"."或"[]"来存取这两个值的成员或方法都会产生一个类型错误。
- undefined表示系统级,出乎意料的或类似错误的值的空缺,null是表示程序级的,正常的或意料之中的值得空缺。null更适合赋值给变量或属性或作为参数传入函数。
- 不同点:
- null是js关键字,表示一个特殊值,常用来描述“空值”,undefined不是关键字,表示更深层次的“空值”,是一种变量的取值,表示变量没有初始化。
- 对null执行typeOf预算,返回字符串“object”,所以说null是一个特殊的对象值,含义是“非对象”。对undefined执行typeOf预算,返回“undefined”,undefined是全局变量,它的值就是“未定义”。
- null表示数字、字符串和对象“无值”,要查询对象的属性,或者数组元素的值返回undefined时表示这个属性或者元素不存在,没有返回值则返回undefined,引用没有提供实参的函数形参的值只会得到undefined。