文章简介
本文为【JavaScript 专栏】的第 003 篇文章。
在上篇文章中,笔者简单记录了 typeof 运算符对 ES5 各数据类型的判断结果。其中,null
、array
和 object
都判断为 object 类型。array 作为广义 object 的子类型,返回 object 尚可理解,但为何 null 会返回 object 呢?怀着这样的疑问,笔者于本文记录 typeof null 返回 object 的原因。
array 是一种特殊的 object,它的键名都是整数
typeof null === ‘object’ 的原因
null 的类型是 object,这是由于历史原因造成的。
1995 年的 JS 语言第一版,只设计了五种数据类型:number(整数)、number(浮点数)、string、boolean 和 object。null 仅视为 object 的一种特殊值。
在第一版中,单个值在栈中占用 32 位的存储单元,而这 32 位的存储单元又可以划分为类型标签(0-2位)和实际数据,类型标签存储于低位中,具体可以分为 5 种: