JavaScript 中的 == 有什么问题,导致大家更推荐使用 === 呢?
原因很简单,因为 x == y 在对比 x 和 y 的值之前,会尝试对 x 和 y 做类型转换,变成同一种类型后,再对比。
比如 false == 0 就是先将 0 转为 bool 值 false,再与 false 做对比。(评论里说我写错了,是的我写错了……这正好证明 == 很难用……)
然而问题就出在「类型转换」上,这个类型转换的规则非常难记。
有多难记呢?看看知乎上的一个问答,由于规则十分复杂,您就不要看了,直接看下一段。
下面是 x == y 的「真值表」,左边表示 x 的取值,上边表示 y 的取值,绿色表示真,白色表示假:

难记吧?
所以,== 是一个难用的符号,非常非常容易出错!!
所以,我们推荐使用 === 代替 ==。
真值表如下:

是不是清爽到爆!
=== 与 == 的区别就是,=== 不做类型转化,只要类型不同,就会返回 false。
这就要求你在使用 === 前,自己手动进行类型转化了。
var number = +"10" // 字符串转为数字
var bool = !!number // 数字转为布尔
var string = 4 + '' // 数字转为字符串以上,就是不使用 == 的原因。
欢迎进群与我探讨技术,戳此扫码加微信进程序员分享交流群。
本文作者方应杭,未经同意禁止转载,转载请联系本人并加上版权声明和群链接。