if(xxx)的判断
if后的括号里的表达式会被强制转换为布尔类型
数据类型 | 转换结果 |
---|---|
undefined | false |
Null | false |
Boolean | 直接判断 |
Number | +0,-0,或者NaN为false,其他为true |
String | 空字符串为false,其他为true |
Object | true |
a==b的判断
a | b | 结果 |
---|---|---|
Null | undefined | true |
Number | String | x==toNumder(b) |
Boolean | (any) | toNumber(a)==b |
Object | String or Number | toPrimitive(a)==b |
otherwise | otherwise | false |
- toNumber
数据类型 | 转换结果 |
---|---|
undefined | NaN |
Null | 0 |
Boolean | true->1,false->0 |
String | "abc"->NaN,"123"->123 |
- toPrimitive
对于Object类型,先尝试调用.valueof方法获取结果。如果没定义,再调用toString方法获取结果