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