我发现了类型操作符返回值的奇怪行为。看看下面的代码:
所以我使用typeof运算符获取 object 作为null的类型。这是与浏览器相关的错误还是预期的行为?对于我来说,typeof会为null值返回“object”听起来并不正常。我会期望null。我测试了铬。感谢
答案 0 :(得分:1)
根据MDN,这是ECMAScript中的一个错误,应为null。
在JavaScript的第一个实现中,JavaScript值是 表示为类型标记和值。对象的类型标记为0。 null表示为NULL指针(在大多数平台中为0x00)。 因此,null为0作为类型标记,因此返回伪造类型 值。 (
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
答案 1 :(得分:1)
这是the ES5 spec section 11.4.3处定义的预期行为:
- 根据表20返回由Type(val)确定的字符串。
醇>...
Type of val Result Null "object"
永远不会定义typeof
运算符为任何值返回'null'
,无论它是否实际为空。它会像你期望的那样处理undefined
,但他们选择不特别处理null。