if(xx)
对于if(xx),是把xx转换成boolean在进行判断
如果括号内是boolean,直接判断。否则括号里的表达式会被强制转换成boolean,转换规则如下:
1.if(number)
当 if(number),+0,-0,NaN会被转换为false,其他会被转换为true
2.if(string)
当 if(string),空字符串为false,其他为true
3.if(boolean)
当 if(boolean),直接判断
4.if(object)
当 if(object),转换为true
5.if(undefined)
当 if(undefined),转换为false
6.if(null)
当 if(null),转换为false
a==b
对于a==b,是将两边转换成数值进行判断
对于相同类型的a、b,相等的判断较简单。以下主要讨论不同数据类型的a、b之间进行相等运算时的判断
-
string == number
结果为 toNumber(a) == b ,当a无法转换为number时判断相等为false
boolean == (any)
Boolean在相等运算时会转换为数值,true为1,false为0。
- object == number/string
object会试图使用valueOf和toString转换后比较
- null == undefined //true