typeof null 为什么返回的是object?

null是空指针对象,那null是不是Object的实例呢

var a = null;
typeof a; // object
a instanceof Object // false

null也不是Object的实例,那类型检测的时候为什么是'objec',是历史原因还是浏览器的兼容问题,不同的浏览器会显示不同的答案?

阅读 6.3k
3 个回答

这种问题问之前为什么不搜一下先呢?答案一大把..

具体可以参考知乎这位博主的回答

  1. null不是一个空引用, 而是一个原始值, 参考ECMAScript5.1中文版 4.3.11节; 它只是期望此处将引用一个对象, 注意是"期望", 参考 null - JavaScript.
  2. typeof null结果是object, 这是个历史遗留bug, 参考 typeof - JavaScript
  3. 在ECMA6中, 曾经有提案为历史平凡, 将type null的值纠正为null, 但最后提案被拒了. 理由是历史遗留代码太多, 不想得罪人, 不如继续将错就错当和事老, 参考 harmony:typeof_null [ES Wiki]

null当然不是Object的实例。
null是一个空的对象引用,既然是空的,就不存在任何引用。
typeof a 返回Object的原因,就是因为null表示空的对象引用。
typeof a 不存在浏览器兼容性.
有个这样一种做法,如果你准备将对象赋给a,那么a最好初始化为null而不是undefined.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题