undefined和null 对比

309 阅读1分钟

共同点: undefined和null都是JavaScript的基本类型,保存在栈内存中。

不同点:

  • undefined表示声明未赋值的对象或者是不存在的对象属性值
  • null字面意思是空值,这个值的语义是希望表示一个对象被人为的重置为空对象。在内存中的表示就是,栈中的变量没有指向堆中的内存对象

当一个对象被赋值了null以后,原来的对象在内存中就处于游离状态,GC会择机回收该对象并释放内存。因此,如果需要释放某个对象,就将变量设置为null,即表示该对象已经被清空,目前无效状态。

判断 null和undefined是否相等?

null == undefined    // true
null === undefined   // false

对比发现:null和undefined两者相等,但是两者做全等比较时又不相等。