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