在 JavaScript 中,typeof 操作符返回一个对象,表示未经计算的操作数的类型。
console.log(typeof 1); //number
如果对 null 进行 typeof 操作,得到的结果是 object。因此,很多人将 null 当做 JavaScript 中的一个对象。然而事实是, typeof null = 'object' 只是 JavaScript 语言本身的一个 bug。
编程语言最后的形式都是二进制,所以 JavaScript 中的对象在底层肯定也是以二进制表示的。如果底层有前三位都是零的二进制,就会被判定为对象。底层中 null 的二进制表示都是零。所以在对 null 的类型判定时,发现其二进制前三位都是零,因此判定为 object。
Jason Blackeye 2017-06-27 01-10-06 .jpg
网友评论