提问者:小点点

类型运算符返回值为空[重复]


我发现类型操作符返回值有一个奇怪的行为。看一下下面的代码:

因此,我使用type of运算符获取null类型的对象。这是一个与浏览器相关的错误,还是一种预期的行为?对我来说,typeof为空值返回“object”听起来不太正常。我希望是null。我在chrome上进行了测试。谢谢


共2个答案

匿名用户

根据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。