typeof null 为什么输出 object
typeof null 为什么输出 object;为什么 null instanceof object 输出false
typeof null 为什么输出 object
到目前为止,JavaScript 总共出了八种数据类型:undefined、string、symbol、null、number、boolean、bigInt、object
除了 null,typeof 操作符对于以上的都能准确输出,甚至还能输出具体的 'function'
对于这个问题,可以追溯到 JavaScript 的第一个版本。
它的设计是把数据存储在 32 位的二进制存储单元中。而这 32 位又划分为:实际数据+类型标签(位于低三位,即从低位开始的三位)
-
当低三位为 000 时,被typeof 判断为 'object'
-
当低三位为 001 时,被typeof 判断为 'number'(整数)
-
当低三位为 010 时,被typeof 判断为 'number'(浮点数)
-
当低三位为 100 时,被typeof 判断为 'string'
-
当低三位为 110 时,被typeof 判断为 'boolean'
为什么 null instanceof object 输出false
答:因为null 并不是 Object 的实例
参考文章:
https://blog.51cto.com/u_15182950/2736166
这一路,灯火通明