Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
本题难度:⭐
难度评级最高五星,最低一星。
答:
typeof null // 'object'
typeof 运算符对基本数据类型的运算:
typeof 'lin' // 'string'
typeof NaN // 'number'
typeof 1 // 'number'
typeof true // 'boolean'
typeof undefined // 'undefined'
typeof Symbol() // 'symbol'
typeof null // 'object'
null 作为一个基本数据类型为什么会被 typeof 运算符识别为 object 类型呢?
事实上,这是第一版 Javascript 留下来的一个 bug。
Javascript 中不同对象在底层都表示为二进制,而 Javascript 中会把二进制前三位都为0的判断为 object 类型,而 null 的二进制表示全都是0,自然前三位也是0,所以执行 typeof 时会返回 'object'。
那为啥那一堆设计语言的大佬们会放任这个 bug 存在这么多年呢?
因为这个 bug 牵扯了太多的 Web 系统,一旦改了,会产生更多的bug,令很多系统无法工作,也许这个 bug 永远都不会修复了。
判断一个类型为 null 可以这么写,直接判断变量全等于 null:
let a = null
if (a === null) {
// do something
}
或者
let a = null
if (!a && typeof a === 'object') {
// do something
}
显然前者更好。
如果我的文章对你有帮助,你的👍就是对我的最大支持^_^
我是阿林,输出洞见技术,再会!
上一篇:
下一篇: