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方法获取结果