1. 关于if(xx)的判断。
首先,对于if()括号中的内容表达式,会被强制的转化为布尔值(即true or false),然后根据结果进行判断
if(xxx){
true case;
}else{
false case;
}
括号中的内容类型可以归纳成一下几类:
类型 | 结果 |
---|---|
Undefined | false |
Null | false |
Boolean | 直接判断true or false |
Number | +0,-0,或者NaN结果为false,其他情况均为true |
String | 空字符串为false,其他情况均为true |
Object | true |
注意内容:
if(" "){
console.log('blank')
}//结果为true
if(""){
console.log('empty')
}//结果为false
if ([0]) {
console.log('array')
}//结果为true
2. 关于a == b 的判断
a | b | 结果 |
---|---|---|
Null | Undefined | true |
Number | String | a == toNumber(b) |
Boolean | (Any) | toNumber(a) == b |
Object | String or Number | toPrimitive == b |
Otherwise | Otherwise | false |
注意内容:
toPrimitive: 对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果。
补充
toNumber的结果
Type | Result |
---|---|
Undefined | NaN |
Null | 0 |
Boolean | true→1,false→0 |
String | "abc"→NaN,"123"→123 |