typeof null 为什么输出 object

typeof null 为什么输出 object;为什么 null instanceof object 输出false

typeof null 为什么输出 object

到目前为止,JavaScript 总共出了八种数据类型:undefined、string、symbol、null、number、boolean、bigInt、object

除了 null,typeof 操作符对于以上的都能准确输出,甚至还能输出具体的 'function'

对于这个问题,可以追溯到 JavaScript 的第一个版本。

它的设计是把数据存储在 32 位的二进制存储单元中。而这 32 位又划分为:实际数据+类型标签(位于低三位,即从低位开始的三位)

  • 当低三位为 000 时,被typeof 判断为 'object'

  • 当低三位为 001 时,被typeof 判断为 'number'(整数)

  • 当低三位为 010 时,被typeof 判断为 'number'(浮点数)

  • 当低三位为 100 时,被typeof 判断为 'string'

  • 当低三位为 110 时,被typeof 判断为 'boolean'

为什么 null instanceof object 输出false

答:因为null 并不是 Object 的实例

参考文章:

https://blog.51cto.com/u_15182950/2736166

https://2ality.com/2013/10/typeof-null.html

https://v8.dev/blog/react-cliff

posted @ 2022-07-30 21:40  朱在春  阅读(73)  评论(0编辑  收藏  举报