【JavaScript】- typeof 检测 nul 为什么返回 Object?

typeof null输出object,是JS存在的一个悠久的bug.

JS初始版本使用的是32位二进制单元,,为了性能考虑使用低位存储变量的类型信息,低三位的数字用于表示该数据的类型。低三位数字和表示类型的对应关系如下:

000: object - 当前存储的数据指向一个对象。
1: int - 当前存储的数据是一个 31 位的有符号整数。
010:double - 当前存储的数据指向一个双精度的浮点数。
100: string - 当前存储的数据指向一个字符串。
110: boolean - 当前存储的数据是布尔值。

由于000开头代表的是对象,那么 null 表示全零,所以对象的类型被误判为object。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: typeof操作符用于返回一个值的数据类型,如果应用于空值(null),则会返回"object"。因此,如果使用typeof检测一个null值,将返回"object",这被认为是一个 typeof 的缺陷。 因此,使用typeof无法准确地检测一个变量是否为null。为了检测一个变量是否为null,可以使用严格相等运算符(===)进行比较。例如: ``` var x = null; if (x === null) { // do something } ``` 在这个例子中,使用严格相等运算符可以判断变量x是否为null,如果是,则执行if语句中的代码块。 ### 回答2: 这个说法是对的。在JavaScript中,使用typeof检测空值时,返回的结果是"object",而不是"null"。这是JavaScript语言的一个特性,因为在早期的JavaScript版本中,null被当作一个空对象的引用,因此使用typeof操作符检测null时返回的是"object"。 具体来说,当我们使用typeof操作符检测一个null值时,会得到"object"的结果。这是因为null被当作一个特殊的空对象引用,使得JavaScript引擎将其识别为对象类型。这种行为是JavaScript的设计选择,虽然可能会让人迷惑,但是开发者们已经习惯了这种用法。 所以在使用typeof检测空值时,我们不能依靠返回值是"null"来判断是否为空,而应该使用严格等于操作符(===)来进行判断。例如,通过(x === null)来检测一个值是否为null。 总的来说,尽管利用typeof检测空值返回的是"object"而不是"null",但这是JavaScript语言特性,我们应该根据实际需求来选择合适的方法来判断空值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值