if(xx) 的判断
对于括号里的表达式,会被强制转换为布尔类型
| 数据类型 | 转换结果 |
|---|---|
| Undefined | false |
| Null | false |
| Boolean | 直接判断 |
| Number | +0、−0、NaN 为 false, 其他 true |
| String | 空字符串为 false,其他 true |
| Object | true |
a=b 的判断
| a | b | 结果 |
|---|---|---|
| null | undefined | true (=== //false) |
| Number | String | a == toNumber(b) |
| Boolean | (any) | toNumber(a) == b |
| Object | String or Number | toPrimitive(a) == b |
| NaN | NaN | true |
toNumber
| 类型 | 结果 |
|---|---|
| Undefined | NaN |
| Null | 0 |
| Boolean | ture → 1, false → 0 |
| String | “abc” → NaN, “123” → 123 |
toPrimitive
对于 Object:先尝试调用 .valueOf 方法获取结果;如果没定义,再尝试调用 .toString方法获取结果。