与typeof
一起使用时,为什么object
会返回null
?根据我的理解,这是全局对象的顶级属性。参考官方文档会有很大帮助。
答案 0 :(得分:2)
在JavaScript的第一个实现中,JavaScript值是 表示为类型标记和值。对象的类型标记为0。 null表示为NULL指针(在大多数平台中为0x00)。 因此,null为0作为类型标记,因此返回伪造类型 值。 (参考)
针对ECMAScript提出了一项修正案(通过选择加入),但遭到拒绝。 它会导致typeof null ===' null'。
参考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null
答案 1 :(得分:2)
因为specification这样说:
Table 20 — typeof Operator Results
Type of val Result
---------------------------
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
...
4.3.11空值
表示故意缺少任何对象值的原始值
尽管如此,null
仍然是数据类型 Null,您可以使用null
来使用其他对象(例如访问null
上的属性错误而不是返回undefined
(无论好坏))。
根据我的理解,这是全局对象的顶级属性。
不,null
是 literal ,就像5
是一个数字文字一样。另一方面,undefined
是一个全局变量(好像它已经不够混淆了)。
答案 2 :(得分:1)
是status-by-design。在Javascript中null
是object
这背后的原因是null,与undefined不同, 曾经(并且仍然)经常在物体出现的地方使用。换一种说法, null通常用于表示对象的空引用。什么时候 Brendan Eich创建了JavaScript,他遵循相同的范例,并且它 有意义地(可以说)返回“对象”。实际上,ECMAScript specification将null定义为表示的原始值 故意没有任何对象价值(ECMA-262,11.4.11)。