当前位置: 代码迷 >> 综合 >> typeof null 为 object的问题,为什么typeof null 为 object
  详细解决方案

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

热度:66   发布时间:2023-11-25 20:33:26.0

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

好像都可以呀!

  相关解决方案