if(xx)
规则
对于括号里的表达式,会被强制转换为布尔类型
类型结果
undefinedfalse
Nullfalse
Boolean直接判断
Number+0, −0, 或者 NaN 为 false, 其他为 true
string空字符串为 false,其他都为 true
Objecttrue
==
规则
对于等于号两边的数值,会被强制转化成数字然后进行比较
xy结果
nullundefinedtrue
NumberStringx==toNumber(y)
Boolean(any)toNumber(x)==y
ObjectString or NumbertoPrimitive(x)==y
otherwiseotherwisefalse
toNumber
typeResult
UndefinedNaN
Null0
Booleantrue->1,false->0
String"abc"->NaN,"123"->123
toPrimitive
对于Object类型,先尝试调用.valueOf方法获取结果。如果没有定义,在尝试调用toString方法获取结果