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

参考ECMA手册ECMAScript Language Specification ,里面规定了typeof(null)的值是"object",但是为…
关注者
100
被浏览
107,692
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

typeof null 为"object", 原因是因为 不同的对象在底层都表示为二进制,在Javascript中二进制前三位都为0的话会被判断为Object类型,null的二进制表示全为0,自然前三位也是0,所以执行typeof时会返回"object"。
一个不恰当的例子,假设所有的Javascript对象都是16位的,也就是有16个0或1组成的序列,猜想如下:

Array: 1000100010001000
null:  0000000000000000

typeof [] →"object"
typeof null→"object"


因为Array和null的前三位都是000。为什么Array的前三位不是100?因为二进制中的“前”一般代表低位, 比如二进制00000011对应十进制数是3,它的前三位是011。