Words etch cherished moments.
OG

typeof null的输出结果

700 words, 2 min read
2019/05/06 AM
392 views
          
  • 1
  • 2
console.log(typeof null); // "object"

JavaScript 中 typeof null 返回 "object" 的原因是历史遗留问题,源自JavaScript语言设计的早期阶段。具体原因为:

  1. 底层表示与类型检测:在JavaScript的第一个版本中,所有数据都以32位单元存储。为了性能和内存使用效率,这些值的类型信息被编码在值的某些位上。对于对象,其类型标签被设计为二进制的000。而 null 值,在许多平台上,作为空指针表示,其二进制形式为全0。因此,当进行类型检查时,null 的二进制前三位也是0,这导致它被误分类为“object”。

  2. 设计简化与局限:在1995年的JavaScript最初设计中,只有五种基本数据类型:number、string、boolean和object,以及后来定义的undefinednull 被视为 object 类型的一种特殊值,尽管从语义上看它更应该与无值或者空引用关联。

  3. 历史决策影响:这一行为并非设计上的疏忽或错误,而是那个时期为了快速实现和兼容性所做的决策结果。随着语言的发展,虽然这一行为被视为不直观且可能引起混淆,但它作为JavaScript的一部分被保留下来,以确保向后兼容性。

因此,尽管从现代视角看 null 更合理地应被视为独立的基本类型,但 typeof null 返回 "object" 是出于对早期实现细节的尊重和维护语言兼容性的需要。

Creative Commons BY-NC 4.0
https://zhangwurui.cn/article/48
0/0comments
Guest
Start the discussion...
Be the first to comment