Skip to content
大纲

== 和 ===

==

  1. 只比较值,不比较类型
  2. 在判断相等时会进行隐式的类型转换, 其比较遵循一些原则,即先转换类型再比较。
    • 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值,即是调用Number()方法。
    • 如果一个操作数是字符串,另一个是数值,在比较相等性之前先将字符串转换为数值,同样调用Number()方法。
    • 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()和toString()方法把对象转换成基础类型的值再比较,除Date对象外,会优先尝试使用valueOf()方法,用得到的基本类型按照前面的规则进行比较。
    • 以及null == undefined,此外任何其他组合,都不相等
js
1 == true //true // Number Boolean
  2 == true //false
  1 == "1"  //true // Number String
  [] == ""  //true // Object String
  [] == false // true // Object Boolean
  [] == 0   //true // Object Number
  {} == 0   //false 
  [] == {}  //false
  [] == []  //false
  {} == {}  //false
  null == undefined //true
  0 == "0"  //true
  0 == []   //true
  "0" == [] // false

===

先判断类型再比较,类型不同直接不相等

Released under the MIT License.