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

javascript null returns object when used with typeof operator

本文关键字:javascript null 返回 对象 typeof 运算符 一起      更新时间:2023-09-26

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

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

有人提议(通过选择加入)对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

因为规范这么说:

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文字,就像5是数字文字一样。另一方面,undefined是一个全局变量(好像它还不够混乱)。

这是设计的状态。在Javascript中,nullobject

Kiro Risk表示

这背后的原因是null与undefined相比,过去(现在仍然)经常在对象出现的地方使用。换句话说,null通常用于表示对对象的空引用。什么时候Brendan Eich创建了JavaScript,他遵循了同样的范式返回"object"是有意义的(可以说)。事实上,ECMAScript规范将null定义为表示故意不存在任何目标值(ECMA-262,11.4.11)。