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