== 和 === 的区别,以及 == 的隐式类型转换

294 阅读1分钟

区别

  • === 严格相等,需要值与类型都相等才返回true
  • == 值相等通常就返回true,他涉及了一些隐式类型转换,转换规则如下:
    • 两边类型相同直接比较值的大小;
    • 判断两边是nullundefined则返回true
    • 两边值是'StringNumber则先把'String转换成数字类型在比较;
    • 其中一方是布尔类型则先把布尔值转换成数字类型,再进行比较;
    • 其中一方是数字类型先转换成数字类型再比较;
    • 一方是对象类型,一方是字符串类型、数字类型和Symbel类型这三个中的一个,则先把对象转换成字符串再比较。

综上,项目中最好是都用===,双等判断存在太多变数。