正文从这开始~~
网上已经有很多 JS 隐式类型转换相关的博客, 很多面试者专门复习过此问题, 但依然挡不住面试官一个又一个的无聊小题目~
[] == false // true !!...看完此文你可以完全不需要背诵复杂冗长的 ECMA 规范, 用逻辑即可推理
现在, 我们假装从 JS 设计者的角度来聊聊隐式类型转换, 首先要记住, JS 作者的”初衷”是美好的, 他希望 == 是最顺手最快捷的比较...相当于 NaN == NaN, 如果 NaN 可以等于自身的话, 这种情况就会返回 true
那整个隐式转换就乱套了
因此 NaN 不能等于自身也是哑巴吃黄连, 有苦说不出啊
以上纯属本人推测, 概不负责..., 毕竟 Java 中的 NaN 也不能等于自身
隐式转换的恶果
NaN 不能等于自身是隐式转换最大的恶果
你可以尝试如下操作
[1, 2, NaN].indexOf(NaN) // -1 [1, 2..., NaN].includes(NaN) // true
有比较的地方, 就会有 NaN 特殊处理, 否则就是不严谨
简单逻辑复杂化, 说的就是你 NaN, 可以说 “隐式转换一时爽”~
为什么 null