前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript基础:typeof null 为什么返回object

JavaScript基础:typeof null 为什么返回object

原创
作者头像
IT工作者
发布2022-01-26 10:53:52
2.9K0
发布2022-01-26 10:53:52
举报
文章被收录于专栏:程序技术知识

null本身实际上是基本类型,但是Javascript在存储的时候,会将不同的对象在底层存储都使用二进制的方式存储,在Javascript中如果二进制的前三位都为0的话就会被判断为object,null的二进制存储表示形式为全是0,自然前三位也是0,因此执行typeof时会返回”object”。

不信的同学可以在控制台执行以下代码试试看哦:

代码语言:javascript
复制
console.log(typeof null)

控制台输出会以下结果:

代码语言:javascript
复制
object

原理是这样的,不同的对象在底层都表示为二进制,在 JavaScript 中二进制前三位都为 0 的话会被判断为 object 类型, null 的二进制表示是全 0,自然前三位也是 0,所以执行 typeof 时会返回“ object ”。 这个bug是第一版Javascript留下来的。在这个版本,数值是以32字节存储的,由标志位(1~3个字节)和数值组成。标志位存储的是低位的数据。 这里有五种标志位: (1) 000:对象,数据是对象的应用。 (2) 1:整型,数据是31位带符号整数。 (3) 010:双精度类型,数据是双精度数字。 (4) 100:字符串,数据是字符串。 (5) 110:布尔类型,数据是布尔值。 最低位有一位,那么标志位只有一个1字节长度;或者是零位,标志位有3个字节长度,多出两个了字节,一共多出四种类型。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档