概览
null 和 undefined是JavaScript中的两种基本标量类型。它们很相似,但也有区别。
内容
相同(类型转换)
1 布尔值转换:null和undefined布尔值强制类型的结果都是false;
2 宽松相等:null和undefined互为宽松相等,且与其它值都不宽松相等;
不同
1 关键字与标识符:JavaScript中,null是关键字,不可以用于标识符,而undefined是标识符;
2 JSON 安全:从Json安全的角度来看,null是Json安全的,undefined是Json不安全的,会被忽略;
3 typeof类型校验:null的结果为:'object',undefinded的结果为:'undefined';
4 人为重置:null表示空值,曾经有值但现在没有值,一个被人为重置的空指针对象,而非变量的原始状态;undefined表示一个已定义但未初始化的值,变量最原始的状态,未被人为重置;
5 内存管理:从内存的角度看:null表示栈内存中的变量没有指向堆内存的对象,变量被赋值为null后,原来的对象在内存中处于游离态,会被垃圾回收并释放内存;undefined是一个基本标量,一直存储在栈内存中。