你要知道的JavaScript--为什么typeof null为"object"

414 阅读1分钟

第一版的JavaScript是用32位比特来存储值的,且是通过值的低1位或3位来识别类型的。

1:整型(int)
000:引用类型(object)
010:双精度浮点型(double)
100:字符串(string)
110:布尔型(boolean)

另外还用两个特殊值:
undefined,用整数−2^30(负2的30次方,不在整型的范围内)
null,机器码空指针(C/C++宏定义),低三位也是000而在JS_TypeOfValue(也就是typeof的源代码)里,是没有先过滤null的,导致在判断obj阶段产生了误会。

参考链接:Dr. Axel Rauschmayer