1.相同点
1)Undefined类型派生自null类型,所以在非严格模式的情况下,两者是对等的
undefined==null //true
2)undefined和null在转换为boolean类型的值时,都会转换为fales
3)将两者转换为对象时都会抛出一个TypeError的异常,也就是平时最常见的引用异常
2.不同点
1)null是JavaScript中的关键字,而undefined是JavaScript中的一个全局变量,即挂载在window对象上的一个变量,并不是关键字
2)使用typeof 检测两种数据类型的时候 undefined会返回undefined 而null则会返回对象
3)在通过call调用toString()方法的时候undefined类型的值会返回 "[object Undefined]" 而Null类型的对象会返回"[object Null]"
Object.prototype.toString.call(undefined)//[object Undefined] Object.prototype.toString.call(null)//[object Null]
4)在进行字符串类型转换的时候 都是会转换成他们本身的字符串变量
undefined + ‘string‘ //undefined string null + ‘string‘ //null string
5)在进行数值类型转换的时候
undefined = NaN 不可以进行数值运算 null = 0 可以进行数值运算