与typeof运算符一起使用时,javascript null返回对象
javascript null returns object when used with typeof operator
为什么typeof
与null
一起使用时会返回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中,null
是object
Kiro Risk表示
这背后的原因是null与undefined相比,过去(现在仍然)经常在对象出现的地方使用。换句话说,null通常用于表示对对象的空引用。什么时候Brendan Eich创建了JavaScript,他遵循了同样的范式返回"object"是有意义的(可以说)。事实上,ECMAScript规范将null定义为表示故意不存在任何目标值(ECMA-262,11.4.11)。
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 来自文本输入null的html javascript变量
- html+javascript:如何在某些条件下禁用dropdownlist中的null选项
- 当null应该在javascript中使用而不是未定义时
- Javascript Float32数组抛出无法读取属性'0'即使数组定义良好,也为null
- 全局Javascript变量变为null
- 如何删除此JavaScript null错误
- chrome和firefox上的javascript null比较不同
- JavaScript null;占位符与“准备清除”
- JavaScript null 参数使正则表达式匹配
- Javascript null 或 empty 控件不起作用
- 将Python None转换为JavaScript null
- JavaScript null引用错误
- 使用chrome fileSystem编写时,字符串中的Javascript NULL字符
- Javascript null输入错误
- 是javascript null独立类型的对象's值
- 与typeof运算符一起使用时,javascript null返回对象
- Javascript null检查没有按预期工作
- IE8 Javascript null != undefined
- Javascript null为空对象属性