加载中...

类型强制转换指 JavaScript 在表达式求值时自动把值从一种类型转换为另一种类型的行为,分为显式转换(Number(x)、String(x))与隐式转换(运算符触发)。作为弱类型语言,JS 的隐式转换规则贯穿相等比较、算术运算与逻辑判断。
抽象相等 == 在类型不同时按规范逐步转换后比较:null == undefined 为 true;字符串与数字比较时字符串转数字;布尔值先转数字;对象通过 Symbol.toPrimitive、valueOf、toString 转为原始值。加号 + 遇到字符串做拼接,其余算术运算符倾向转数字。由此产生大量反直觉结果,如 [] + {} 与 {} + [] 不同、"0" == false 为 true、NaN 不等于自身等,相关梗图长期流传。
主流规范(如 ESLint 的 eqeqeq 规则)要求一律使用严格相等 ===,需要转换时显式书写;判断存在性用 == null 是少数被接受的例外。TypeScript 的类型检查进一步在编译期拦截这类问题。
理解转换规则是读懂 JS 怪异行为的钥匙,也是语言设计"宽容优先"历史取舍的集中体现。

登录 后参与讨论
暂无讨论,来发表第一条评论吧