我正在阅读“专业Web开发者Javascript”第4章,它告诉我五种类型的原语是:未定义,null,布尔,数字和字符串。
如果null是一个原语,为什么typeof(null)返回“object”?
这是不是意味着null是通过引用传递的(我假设这里所有的对象都是通过引用传递的),因此使它不是一个原语?
我正在阅读“专业Web开发者Javascript”第4章,它告诉我五种类型的原语是:未定义,null,布尔,数字和字符串。
如果null是一个原语,为什么typeof(null)返回“object”?
这是不是意味着null是通过引用传递的(我假设这里所有的对象都是通过引用传递的),因此使它不是一个原语?
当前回答
如果null是一个原语,为什么typeof(null)返回“object”?
简而言之:它是ECMAScript中的bug,类型应该是null
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null
其他回答
如果null是一个原语,为什么typeof(null)返回“object”?
简而言之:它是ECMAScript中的bug,类型应该是null
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null
在JavaScript中,typeof null是'object',这错误地表明null是一个对象。这是一个错误,不幸的是无法修复,因为它会破坏现有的代码。
来自YDKJS这本书
这是JS中一个长期存在的错误,但它可能永远不会消失 待修复。Web上有太多的代码依赖于这个bug,因此 修复它会导致更多的bug !
来自MDN页面关于typeof操作符的行为:
零 //这是从JavaScript开始的 Typeof null === 'object'; 在JavaScript的第一个实现中,JavaScript值被表示为一个类型标签和一个值。对象的类型标记为0。null表示为null指针(在大多数平台中为0x00)。因此,null以0作为类型标记,因此返回值为“object”类型。(参考) 针对ECMAScript提出了一个修正(通过选择加入),但被拒绝了。这将导致typeof null === 'null'。
这是javascript第一版遗留下来的bug。
“这是一个错误,不幸的是无法修复,因为它会破坏现有的代码。”
参考和更多信息:https://2ality.com/2013/10/typeof-null.html