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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容