为什么在JavaScript中typeof(null)==“object”?

为什么在JavaScript中typeof(null)==“object”?,javascript,Javascript,我刚刚注意到以下表达式在JavaScript中是正确的: typeof (null) == 'object' 这看起来很奇怪,假设我有一个空值的变量,这个变量的typeof返回对象 我想知道为什么typeof null在JavaScript中是对象 在JavaScript的第一个实现中,JavaScript值表示为一个类型标记和一个值。对象的类型标记为0。在大多数平台中,null表示为null指针0x00。因此,null的类型标记为0,因此返回值为伪typeof 参考资料:有人对它进行了讨论,

我刚刚注意到以下表达式在JavaScript中是正确的:

typeof (null) == 'object'
这看起来很奇怪,假设我有一个空值的变量,这个变量的typeof返回对象

我想知道为什么typeof null在JavaScript中是对象

在JavaScript的第一个实现中,JavaScript值表示为一个类型标记和一个值。对象的类型标记为0。在大多数平台中,null表示为null指针0x00。因此,null的类型标记为0,因此返回值为伪typeof


参考资料:

有人对它进行了讨论,例如,人们通常认为它不是很好,但它有一个基本原理:空值代替对象,它是当您期望对象而没有对象时的值

发件人:

null:表示有意缺少任何对象值的基元值


它与类型编号的NaN完全相同。

重复,因为规范上这么说:你刚才复制了吗?编辑:哦,不,你没有,你只是引用了相同的资源。。。。不过很奇怪。这就是为什么标记引号很好,比如>此处引用的文本。不管怎样,这两个答案都是逐字复制MDN文章的一部分…我只是想指出,这个答案实际上不值得被否决。按照惯例,它只是引用了MDN,虽然这本可以更清楚。我很抱歉,谢谢你的编辑。下一次我将使用quote。是的,它不会伤害到明确的内容,就像MDN所说:>text而且,现在更改它可能会破坏东西。当然。就我个人而言,我发现它是如此的逻辑和连贯,以至于我几乎喜欢它。除了我从来没有发现过一种情况,让typeof null作为object是有用的……但它和NaN不一样。IEEE 754浮点标准描述了表示无效结果的值NaN。所以它实际上是数据类型number,但它的名称不太合适。但回到主题,我真的知道为什么内置了正确的运算符来返回值的真实数据类型。typeof就是搞砸了。现在还不确定ES6在这方面增加了什么。事实上,我认为它在逻辑上是连贯的,而你没有,而且没有明确的论点,让我认为我们应该把这个问题作为离题而不是重复来结束。这取决于问题的原因。这是为什么操作员会这样做,还是决定操作员会这样做?前者可以通过指向空间来回答。后者宁愿要求给Brendan Eich发一封电子邮件。无论如何,进一步讨论这个问题没有任何价值。