在js中,“==”以及if()中的类型判断以及转换。
对于if括号里的表达是,会被强制转换成布尔类型。
类型 | 结果 |
---|---|
underfined | false |
null | false |
boolean | 直接判断 |
number | 0或者NaN为false,其他为true |
string | 空字符串为false,其他为true |
object | true |
而对于“==”的判断,相比if要麻烦的多。不过还是有规律可以总结的,如下:
x | y | 结果 |
---|---|---|
null | underfined | true |
number | string | x==toNumber(y) |
boolean | (any) | toNumber(x)==y |
object | string OR number | toPrimitive==y |
otherwise | otherwise | false |
ToNumber
类型 | 结果 |
---|---|
underfined | NaN |
null | 0 |
boolean | true=>1,false=>0 |
string | "abc"=>NaN,"123"=>123 |
ToPrimitive
对于object来说,会先调用.valueOf的方法获取结果,如果没有定义,再调用.toString的方法获取结果
网友评论