typeof null 输出为object其实是一个底层的错误,但直到现阶段都无法被修复。
原因是,在Javascript初始版本中,值以32位存储。前3位表示数据类型的标记,其余位则是值。对于所有的对象,它的前3位都以000作为类型标记位。
在Javascript早期版本中,null被认为是一个特殊的值,用来对应C中的空指针。但Javascript中没有C中的指针,所以nuli意味着什么都没有或者void并以全(32个)表示。
因此每当javascript读取null时,它前端的3位将它视为对象类型,这也是为什么typeof null返回object的原因。