if(xx)作为条件判断语句时,在(xxx)为非严格意义上的等式如何判断条件为true还是false?
六种数据类型,undefined,number,string,boolean,null与object,在进行if条件语句判断时都会转化为boolean类型判断,其转换规则如下:
image.png
如:
var a=5
if(a){
console.log('true')
} // true
a=0
if(a){
console.log('true')
}
else{
console.log('false')
}// false
a=NaN
if(a){
console.log('true')
}
else{
console.log('false')
}//false
a=null
if(a)){
console.log('true')
}
else{
console.log('false')
}//false
a==b的判断
a == b的判断分为两种情况,两者数据类型相同时的判断与数据类型不同时的判断。
1.当两者数据类型相同时
当a与b的数据类型相同时,两者执行严格的相等运算;
2.当两者数据类型不相同时
当a与b的数据类型不相同时,会有以下几种情况;
1.如果a和b一个是null,一个是undefined时,相等。
2.如果a和b一个是数字,一个是字符串,先将字符串转为数字,然后比较。
3.如果a和b一个值是true,一个值是false则将其转为1和0比较。
4.如果a和b一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较。
5.其它情况下都不相等。
网友评论