相等操作符
- 相等
==
和不相等!=
对比不同类型会强制转换数据类型,然后再比较
恒等操作符
if(xx)
- if语句的条件部分会将非布尔值的参数自动转换为布尔值,系统内部会自动调用Boolean函数
if(xx)基本规则
相等和不相等操作符遵循下列规则
- null和undefined是相等的
- NaN不相等于NaN
- 如果一个值是number,一个是string,先
Number(String)
然后比较
- 如果一个值是boolean,
Number(true/false)
,则将其转为1/0比较
- 如果一个值是object,一个是数字或字符串,则调用对象的
valueOf()
方法,则尝试使用valueOf和toString转换后比较
特殊情况
null == undefined //true
"NaN" == NaN //false
5 == NaN //false
NaN == NaN //false
NaN != NaN //true
false == 0 //true
true == 1 //true
true == 2 //false
undefined == 0 //false
null == 0 //false
"5" == 5 //true
// object
{} == true // false
[] == true //false
var obj = {
a: 0,
valueOf: function(){return 1}
}
obj == "[object Object]" //false
obj == 1 //true
obj == true //true
// string
1==true
0==false
"0" == true //false
"0" == false //true
"00" == false //true
"0.00" == false //true