当与typeof运算符一起使用时,javascript null返回对象

时间:2014-09-02 16:53:20

标签: javascript

typeof一起使用时,为什么object会返回null?根据我的理解,这是全局对象的顶级属性。参考官方文档会有很大帮助。

3 个答案:

答案 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"
  ...

And it is also saying:

  

4.3.11空值

     

表示故意缺少任何对象值的原始值

尽管如此,null仍然是数据类型 Null,您可以使用null来使用其他对象(例如访问null上的属性错误而不是返回undefined(无论好坏))。

  

根据我的理解,这是全局对象的顶级属性。

不,null literal ,就像5是一个数字文字一样。另一方面,undefined是一个全局变量(好像它已经不够混淆了)。

答案 2 :(得分:1)

。在Javascript中nullobject

Kiro Risk says

  

这背后的原因是null,与undefined不同,   曾经(并且仍然)经常在物体出现的地方使用。换一种说法,   null通常用于表示对象的空引用。什么时候   Brendan Eich创建了JavaScript,他遵循相同的范例,并且它   有意义地(可以说)返回“对象”。实际上,ECMAScript   specification将null定义为表示的原始值   故意没有任何对象价值(ECMA-262,11.4.11)。