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