为什么null==0为false
为什么 null == 0 为false
以下为文档截图 附上链接 https://tc39.es/ecma262/#sec-islooselyequal
x,y如果类型相同 则比较转化为字符串之后的值
x是null y是undefined 返回true
……如果没有符合以上类型的 则返回false
大家都知道 null 是Object类型, 0是Number类型
x是Object y是Number
js在根据比较规则一一对应时 发现并没有匹配的 也就不知道该怎么比较 只能按第14条规则来return false
真是离了个大普
并且由于ES6 采用了一种策略叫One JavaScript
即:
- 新版本始终完全向后兼容(但偶尔可能会有轻微、不明显的清理)
- 旧特性不删除也不修复,而是引入更好的版本,比如let就是var的改进版
- 如果语言的某些方面有变化,只在新的语法结构内生效,即隐式选用,例如,yield只在generator中才是关键字、模块和类中的所有代码都默认开启严格模式
所以这个问题很大概率不会修复 最多会引入新的比较方式
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Big0range!
评论