本文主要是介绍【JavaScript 漫游】【003】typeof null 返回 object 的原因,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章简介
本文为【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 种:
第一种,0-2 位都是0,typeof 判断类型为 object。
第二种,第 0 位是1,1、2 位是0,判断类型为 number(整数)。
第三种,第 1 位是1,0、2 位是0,判断类型为 number(浮点数)。
第四种,第 2 位是1,0、1 位是0,判断类型为 string。
第五种,第 1、2 位都是1,第 0 位是0,判断类型为 boolean。
由于 null 的第 0-31 位都是 0,符合第 0-2 位都是 0 的情况,所以 typeof 判断 null 为 object。
这篇关于【JavaScript 漫游】【003】typeof null 返回 object 的原因的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!