typeof

typeof 可以返回一个表示数据类型的字符串,返回结果包括: number , boolean , string , symbol , object , undefined , function 7 种数据类型 ,但是不能判断 null 和 array(也属于 object)等

Array 属于 Object 我可以理解,为什么 null 也是呢?

这就涉及到了 typeoof 的设计原理了,他是通过判断底层类型的二进制

  • null:所有机器码均为 0
  • undefined:用 −2^30 整数来表示
  • 000:对象
  • 010:浮点数
  • 100:字符串
  • 110:布尔
  • 1:整数

typeof 判断前三位都是 0 的就是对象,所以全是 0 的 Null 自然也被判断为 object