null和undefined区别

  • null表示该变量缺少对象指向
  • undefined表示尚未初始化的变量值

1 在typeof中的结果

js中值以32位存储,前3位表示数据类型标识,对于所有对象前三位为000,null以32个0表示

typeof null // object
typeof undefined // undefined

2 在Object.prototype.toString.call

Object.prototype.toString.call(null)       // '[object Null]'
Object.prototype.toString.call(undefined)  // '[object Undefined]'

3 == 与 ===

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

4 +运算和Number()

let a = undefined + 1  // NaN
let b = null + 1  // 1
Number(undefined)  // NaN
Number(null)  // 0

5 json

JSON.stringify({a: undefined}) // {}
JSON.stringify({a: null}) // '{a: null}'