null 和undefined都是JavaScript里的简单数据类型,我们平时开发中都很常见,它们什么相同点和不同点?
相同点
- 都是空变量
- 都是假值,转布尔值(boolean)都是false
- undefined派生自nul两者在 == 下是相等的,但在 === (严格相等)下是不相等的;
undefined==null // true null === undefined //false
不同点
- undefined是表示变量声明过但并未赋过值,它是所有未赋值变量默认值;null表示一个变量将来可能指向一个对象,一般用于主动释放指向对象的引用;
let a // undefined let a = [1,1]; a = null; //释放指向数组的引用
- null值表示一个空对象指针,它代表的其实就是一个空对象,typeof判断null为object,判断undefined为undefined;
let a = null; let b; console.log(typeof a);// object console.log(typeof b);// undefined
- null是一个表示"无"的对象,转为数值时为0,null转数字为0,undefined是一个表示"无"的原始值,转为数值时为NaN!
Number(undefined);//NaN Number(null);//0
- null是一个对象未初始化,undefined是初始化了,但未定义赋值