You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么JavaScript中null === null为true但typeof null返回object?

关于JavaScript中null的相等性与typeof结果的疑问解答
  • typeof null返回object是历史遗留bug
    这是JavaScript最初实现时的设计失误:早期JS用32位二进制存储值的类型信息,其中前三位为0的会被判定为object类型。而null的二进制表示是全0,自然就被误识别成了object。这个bug因为涉及大量现有代码的兼容性,一直没有被修复,但从语言规范上来说,null并不是对象。

  • null是原始类型,不是引用类型的对象
    JavaScript的原始类型包括null、undefined、string、number、boolean、symbol、bigint,null是其中独立的一种,不属于引用类型的对象范畴。你提到的“两个对象因地址不同无法相等”的情况,只适用于引用类型的对象实例,和null无关。

  • null的相等性逻辑

    • 对于严格相等===:原始类型的比较是直接对比值,null是唯一的原始值,所以null === null必然返回true。
    • 对于抽象相等==:根据JS的相等规则,当两边都是null时,不需要进行类型转换,直接判定为相等,所以null == null也返回true。

内容的提问来源于stack exchange,提问作者Tarun555

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:14:50