原文
前言
对象是 JavaScript 的基础. 在 JavaScript 中一共有六种主要类型(术语是 "语言类型"):string,number,boolean, null,undefined,object.
简单基本类型 (string,boolean,number,null 和 undefined) 本身并不是对象.
null 有时会被当作一种对象类型, 这是为什么呢? 因为使用 typeof null 得到的结果竟然是 object, 是不是觉得很奇怪, 一个简单的数据类型, 但是 typeof 得到的结果竟然是对象, 这是为什么呢?
typeof null 的结果是 null 的原因
这其实只是语言本身的一个 bug, 即对 null 执行 typeof null 时会返回字符串 "object". 实际上, null 本身是基本类型.
原理是这样的, 不同的对象在底层都表示为二进制, 在 JavaScript 中二进制前三位都为 0 的话会被判断为 object 类型, null 的二进制表示是全 0, 自然前三位也是 0, 所以执行 typeof 时会返回 "object".
null 与对象的复杂关系(typeof null 的结果是 object 的原因)
来源: http://www.bubuko.com/infodetail-2686637.html