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

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

简单来说,空字符串是false,其他字符串是true,对象都是true。

你可能感兴趣的:(关于if(xx)和 a==b的判断)