null与对象的复杂关系(typeof null的结果是object的原因)

Posted shcrk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了null与对象的复杂关系(typeof null的结果是object的原因)相关的知识,希望对你有一定的参考价值。

原文

  简书原文:https://www.jianshu.com/p/c1608452d056

前言

  对象是 javascript 的基础。在 JavaScript 中一共有六种主要类型(术语是“语言类型”):string、number、boolean、 null、undefined、object。
  简单基本类型(string、boolean、number、null 和 undefined)本身并不是对象。
  null 有时会被当作一种对象类型,这是为什么呢?因为使用typeof null得到的结果竟然是object,是不是觉得很奇怪,一个简单的数据类型,但是typeof得到的结果竟然是对象,这是为什么呢?

typeof null的结果是null的原因

  这其实只是语言本身的一个 bug,即对 null 执行typeof null 时会返回字符串 "object"。实际上,null 本身是基本类型。
  原理是这样的,不同的对象在底层都表示为二进制,在 JavaScript 中二进制前三位都为 0 的话会被判断为 object 类型,null 的二进制表示是全 0,自然前三位也是 0,所以执行 typeof 时会返回“object”。




以上是关于null与对象的复杂关系(typeof null的结果是object的原因)的主要内容,如果未能解决你的问题,请参考以下文章

typeof与instanceof比较+undefined与null各种值的相互比较

JS基础-语法+流程控制语句+函数+内置对象数组

typeof, null, 和 undefined

判断JavaScript对象为null或者属性为空

js中通过Object.prototype.toString方法----精确判断对象的类型

javascript中null与undefined的区别