1

我正在分析 javascript 数据类型,发现一些非常奇怪的东西:

> typeof null
"object"
> null instanceof Object
false

目前我不知道我该如何解释。我认为所有的东西typeof === "object"都会Object.prototype在它的原型链中。如果null不是一个object,那么为什么typeof返回那个?

PS有人已经写信给我欢迎来到古怪的javascript世界;)

4

1 回答 1

2

这有历史原因:

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'。

于 2013-06-30T23:13:36.970 回答