Javascript中 if(xx)和 a==b的判断

javascript中,if判断语句跟别的语言一样,符合其判断条件就执行区块里的代码,不符合就跳到别的if区块判断,都没有,就接着往下执行。

if(xx){
}
或
if(x==x){
}

然而,js的if(xx)和==在判断时,会对不同数据类型 做类型转换,很是令人头晕,所以建议
能用===,就用,能同时判断类型;能在判断前,手动转换类型,就转。两者会更容易。

但作为面试常考题目,和coding时要处理的极端状况(比如 改别人的bug),js中==的类型转换,还是值得学习的。
所以,下面总结了所有if和==的判断规律,经常查阅,练出直觉,便也不头晕了。

if(xx)

首先,若if(xx)括号内是个数值,if来判断xx数值的规律,如下:

类型 结果
Undefined false
Null false
Boolean 直接判断
Number +0, −0, 或者 NaN 为 false, 其他为 true
String 空字符串为 false,其他都为 true
Object true

if(x==x)

首先,==两边的不同情况 会进行如下的判断:

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和toPrimitive如何做数据类型转换,如下:

toNumber

type Result
Undefined NaN
Null 0
Boolean ture -> 1, false -> 0
String “abc” -> NaN, “123” -> 123 (" "内不管几个空格,都转为0)

toPrimitive
对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果。

你可能感兴趣的:(Javascript中 if(xx)和 a==b的判断)