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

2018-08-30  本文已影响3人  墙上的土豆会开花

if(xx)

对于括号内的表达式会被强制转换为布尔类型

转换原理

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

a==b

在js判断两个变量值是否相等,可以使用==相等或===严格相等操作符。

==判断两个值是否相等,相同类型直接比较,不同类型需要对类型进行转换再比较。

原理

X Y 结果
Null Undefined true
Number String X==toNumber(y)
Boolean (ang) toNumber(x)==Y
OBject String of Number toPrimitive(x)==Y
Otherwise Otherwise false

TO Number

type Result
Undefined NaN
Null 0
Boolean true→1,false→0
String “abc”→NaN,“123”→123

TO Primitive

对于Object类型,先尝试调用Valae of方法获取结果,如果没有定义,再尝试调用,to string方法获取结果。

上一篇下一篇

猜你喜欢

热点阅读