JS About if-xx- And -a-b
JS函数关于if-xx-和-a-b
JS函数:f(xx)
JS对于括号里的表达式,会被强制转换成布尔类型
基本原理如下表:
| type | result |
|---|---|
| Undefined | false |
| Null | false |
| Boolean | 直接判断 |
| Number | +0,-0,或者NaN为false,其他为true |
| String | 空字符串为false,其他都为true |
| Object | true |
JS函数:a==b
JS对于a==b类型会进行变形比较,原理如下表:
基本上遇到数字以外的类型可以先考虑往数字上转型
| x | y | 结果 |
|---|---|---|
| null | undefined | true |
| Number | String | x == toNumber(y) |
| Boolean | (any) | toNumber(x) == y |
| Object | String or Number | toPrimitive(x) == y |
| otherwise | otherwise | false |
toNumber
其他类型转换成数字用toNumber:
| type | result |
|---|---|
| Undefined | NaN |
| Null | 0 |
| Boolean | true -> 1, false -> 0 |
| String | “abc” -> NaN, “123” -> 123 |
toPrimitive
对于Object类型,先尝试调用.v3alueOf方法获取结果。如果没定义,再尝试调用.toString方法获取结果。