javascript空值-它是一个对象吗

javascript空值-它是一个对象吗,javascript,types,Javascript,Types,我在分析javascript数据类型时发现了一些非常奇怪的东西: > typeof null "object" > null instanceof Object false 现在我不知道该怎么解释。我认为所有拥有typeof==“object”的东西都会在原型链中拥有object.prototype。如果null不是对象,那么为什么typeof会返回该值 PS有人已经写信给我欢迎来到javascript的古怪世界;) 这有历史原因: typeof null==='object';

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

> typeof null
"object"
> null instanceof Object
false
现在我不知道该怎么解释。我认为所有拥有
typeof==“object”
的东西都会在原型链中拥有
object.prototype
。如果
null
不是
对象
,那么为什么
typeof
会返回该值


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

这有历史原因:

typeof null==='object';//这一点从JavaScript开始就存在 在JavaScript的第一个实现中,JavaScript值表示为一个类型标记和一个值。对象的类型标记为0。null被表示为null指针(0x00是大多数平台)。因此,null的类型标记为0,因此返回值为伪typeof。(需要参考)

提出了ECMAScript的修复方案(通过选择加入),但被拒绝。这将导致typeof null=='null'


在一个稍微相关的注释中,看看
Object.create(null)
@SLaks,这有点不同,因为你说的是“新对象的原型不应该是任何东西”和
Object.create(null)。\uu proto\uu
实际上设置为
null
@PaulS.:是;这就是为什么我说“稍微相关”。特别是,不是所有有typeof==“object”的东西都会有object.prototype在原型链中。看起来很疯狂,但是谢谢你的回复,我已经接受了,但是。。。我仍然不知道答案。
null
是对象吗?据我所知,它不是,对吧?对,它不是,它是那种类型的,在一个完美的世界中,
typeof null
将返回
null