# Typeof
# typeof检测出来的类型有哪几种?
number
string
boolean
undefined
function
object
symbol
bigint
# 注意
null 检测出来的是一个 object,这是历史遗留问题, 在 JavaScript 第一个版本中,所有值都存储在 32 位的单元中,每个单元包含一个小的 类型标签(1-3 bits) 以及当前要存储值的真实数据。类型标签存储在每个单元的低位中,共有五种数据类型:
000: object - 当前存储的数据指向一个对象。
1: int - 当前存储的数据是一个 31 位的有符号整数。
010: double - 当前存储的数据指向一个双精度的浮点数。
100: string - 当前存储的数据指向一个字符串。
110: boolean - 当前存储的数据是布尔值。
null 的值是机器码 NULL 指针(null 指针的值全是 0), null的类型标签也是000,和Object的类型标签一样,所以会被判定为Object. 但是后面想要修复牵扯到之前的版本,很难在修复。