typeof null 为 object的问题,为什么typeof null 为 object

typeof null 为 object的问题

先看下下面的代码:

typeof 666 // 'number'
typeof 'str' // 'string'
typeof true // 'boolean'
typeof Symbol() // 'symbol'
typeof undefined // 'undefined'
typeof null //object???

有没有发现一个问题,我们在用 typeof 测试基本数据的类型时, null 的类型竟然显示为 object

可它明明不是引用类型的数据啊,妥妥的良民。为什么还会判断类型为object

这其实只是js一个 bug

???什么堂堂js还会有bug?这就要从很久之前说起了:

​ lang lang ago~ js第一版时,当时采用32位的系统,数值是以32字节(由一位到三位的标识+数值组成)存储。

nullobject的标识都为 000, typeof操作符判断类型的依据也恰好是标识。

这就尴尬了… 想用typeof直接检测是不是object是不靠谱了。

用call:

Object.prototype.toString.call(null)  //'[object Null]'

用instanceof:

let o = null;
o instanceof Object;//fasle

好像都可以呀!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值