JavaScript中调用typeof检测null为何返回object类型?
typeof null 返回
object 的原因及解决办法 这是JavaScript里一个有名的历史遗留bug,从语言诞生初期就存在,而且因为要兼容大量旧代码,这个行为一直被保留到现在,甚至被ES标准正式确定了下来。
早期JavaScript的底层实现中,变量的值是用32位存储单元来表示的,其中最低3位是类型标记位:
- 000:表示对象类型
- 001:整数
- 010:浮点数
- 100:字符串
- 110:布尔值
而null被设计成用全0的存储单元表示,它的最低3位自然是000,所以typeof检测时就把它误判成了object。
如果你需要准确判断一个值是不是null,别用typeof,直接用全等运算符===判断就行:
const score = null; console.log(typeof score); // 输出 "object" console.log(score === null); // 输出 true
内容的提问来源于stack exchange,提问作者Aryan Pradhan
相关产品推荐
相关产品推荐

