详解if(statement)以及A==B判断原则

2018-12-10  本文已影响0人  innerwang

· if(statement)

对于括号中的statement,会被强制转换为布尔类型,再进行判断。

对于六种数据进行转换后的结果如下:

数据类型 条件判断结果
Undefined false
Null false
Boolean 直接进行判断
Number +0,-0,或者NaN都为false,其余为true
String 空字符串为false,其余为true
Object true

如上,在进行if条件判断时,遵循上述原则,则可得到最终结果。

· A==B

对于三种基本数据类型以及复杂类型之间的判等比较,都是先调用toNumber()toPrimitive()方法转换为数值,再进行比较,其余的情况则为确定结果。

不同数据类型之前的判等比较原理如下:

A的数据类型 B的数据类型 判等转化
Number String A==toNumber(B)
Boolean (any) toNumber(A)==B
Object String / Number toPrimitive(A)==B
null undefined true
otherwise otherwise false

不同数据类型调用toNumber()方法得到的结果如下表:

数据类型 结果
undefined NaN
Null 0
Boolean true得到1,false得到0
String "abc"得到NaN,"123"得到123

Object 调用toPrimitive()方法时,会先尝试调用.valueOf方法获取结果,若未定义,则会尝试调用.toString方法获取结果。

上一篇下一篇

猜你喜欢

热点阅读