我发现类型操作符返回值有一个奇怪的行为。看一下下面的代码:
因此,我使用type of运算符获取null类型的对象。这是一个与浏览器相关的错误,还是一种预期的行为?对我来说,typeof为空值返回“object”听起来不太正常。我希望是null。我在chrome上进行了测试。谢谢
根据MDN这是ECMAScript中的一个bug,应该是null。
在JavaScript的第一个实现中,JavaScript值表示为类型标签和值。对象的类型标签是0。null表示为NULL指针(在大多数平台中为0x00)。因此,null的类型标签为0,因此虚假的typeof返回值。(
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
这是预期的行为,如ES5规范第11.4.3节中定义的:
...
Type of val Result
Null "object"
typeof
运算符永远不会定义为为任何值返回“null”
,无论它是否实际为 null。它确实如您所料处理未定义
,但他们选择不专门处理 null。