知识卡片

typeof并不可靠

普通读书笔记卡 · 1498.d

内容

typeof 结果多处不符合直觉:typeof null 返回 object 非 null,判断应用 === nulltypeof 无法区分数组和对象,需用 constructor 或 toString 判断;对正则表达式结果在不同引擎中也不一致。发散:类型判断按需选 === null、Array.isArray、instanceof,不依赖单一操作符。

参考来源

- 位置:《JavaScript语言精粹(修订版)》附录A《毒瘤 Awful Parts》"typeof"一节 - 结论依据:原文指出 `typeof null` 返回 'object' 而不是 'null',"这简直太糟糕了",并给出用 `=== null` 检测的替代方案;接着说明 typeof 无法辨别 null 与对象、也无法辨别数组和对象,还提到不同 JavaScript 实现对正则表达式的 typeof 结果不一致,据此推出 typeof 不能作为可靠、完整类型判断手段的结论。 - 原始内容:typeof null 返回'object'而不是'null'。这简直太糟糕了。其实,有更简单也更好的检测null的方式:my_value === null……typeof不能辨别数组和对象……在对正则表达式的类型识别上,各种JavaScript的实现不太一致。