相同点
Undefined和Null两种数据类型都只有一个字面值,分别是undefined和null。
· Undefined类型和Null类型在转换为Boolean类型的值时,都会转换为false。所以通过非运算符(!)获取结果为true的变量时,无法判断其值为undefined还是null。
· 在需要将两者转换成对象时,都会抛出一个TypeError的异常,也就是平时最常见的引用异常。
Undefined类型派生自Null类型,所以在非严格相等的情况下,两者是相等的
不同点
null是JavaScript中的关键字,而undefined是JavaScript中的一个全局变量,即挂载在window对象上的一个变量,并不是关键字。
在使用typeof运算符检测时,Undefined类型的值会返回“undefined”,而Null类型的值会返回“object”。
typeof undefined; // undefined
typeof null; // object
· 在通过call调用toString()函数时,Undefined类型的值会返回“[object Undefined]”,而Null类型的值会返回“[object Null]”。
在需要进行字符串类型的转换时,null会转换为字符串"null",而undefined会转换为字符串"undefined"。
在需要进行数值类型的转换时,undefined会转换为NaN,无法参与计算;null会转换为0,可以参与计算。