为什么JavaScript里面typeof(null)的值是"object"?

为什么JavaScript里面typeof(null)的值是

1. 娘胎里带出来的.

JS类型值是存在32 BIT 单元里,32位有1-3位表示TYPE TAG,其它位表示真实值

而表示object的标记位正好是低三位都是0

000: object. The data is a reference to an object.

而js 里的Null 是机器码NULL空指针, (0x00 is most platforms).所以空指针引用 加上 对象标记还是0,最终体现的类型还是object..

这也就是为什么Number(null)===0吧...

2. 曾经有提案 typeof null === 'null'.但提案被拒绝