共同点: undefined和null都是JavaScript的基本类型,保存在栈内存中。
不同点:
- undefined表示声明未赋值的对象或者是不存在的对象属性值
- null字面意思是空值,这个值的语义是希望表示一个对象被人为的重置为空对象。在内存中的表示就是,栈中的变量没有指向堆中的内存对象
当一个对象被赋值了null以后,原来的对象在内存中就处于游离状态,GC会择机回收该对象并释放内存。因此,如果需要释放某个对象,就将变量设置为null,即表示该对象已经被清空,目前无效状态。
判断 null和undefined是否相等?
null == undefined // true
null === undefined // false
对比发现:null和undefined两者相等,但是两者做全等比较时又不相等。