关于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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容