== 和 ===
==
- 只比较值,不比较类型
- 在判断相等时会进行隐式的类型转换, 其比较遵循一些原则,即先转换类型再比较。
- 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值,即是调用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===
先判断类型再比较,类型不同直接不相等
JStar