我正在分析 javascript 数据类型,发现一些非常奇怪的东西:
> typeof null
"object"
> null instanceof Object
false
目前我不知道我该如何解释。我认为所有的东西typeof === "object"
都会Object.prototype
在它的原型链中。如果null
不是一个object
,那么为什么typeof
返回那个?
PS有人已经写信给我欢迎来到古怪的javascript世界;)
我正在分析 javascript 数据类型,发现一些非常奇怪的东西:
> typeof null
"object"
> null instanceof Object
false
目前我不知道我该如何解释。我认为所有的东西typeof === "object"
都会Object.prototype
在它的原型链中。如果null
不是一个object
,那么为什么typeof
返回那个?
PS有人已经写信给我欢迎来到古怪的javascript世界;)
这有历史原因:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof#null
typeof null === '对象'; // 这从 JavaScript 开始就一直存在 在 JavaScript 的第一个实现中,JavaScript 值被表示为一个类型标记和一个值。对象的类型标记为 0。null 表示为 NULL 指针(0x00 是大多数平台)。因此,null 将 0 作为类型标记,因此返回值是虚假的 typeof。(需要参考)
提出了针对 ECMAScript 的修复(通过选择加入),但被拒绝了。它会导致 typeof null === 'null'。