理解
- null可以理解为变量指针指向了空对象
- undefined可以理解为指针指向不明确。undefined是派生自null的。
判断
- null == undefined // true undefined是派生自null的。
typeof
- typeof null === 'object' // true 因为null是个指针指向空对象的变量
- 未声明的变量和声明了未赋值的变量使用 typeof 都返回 undefined
var a; typeof a === 'undefined' // true typeof b === 'undefined' // true
undefined
- 任何时候不要给变量赋值为undefined,这样保证了所有值为undefined的变量都是未赋值。
- 判断undefined的时候尽量用 === ,而不是typeof,避免对未声明变量理解为未赋值。
- undefined不是关键字,取值的时候推荐用void 0,或者在全局 const undefined = void 0,锁定这个变量不被改变。