关于if(xx)的判断
if(xx)是一个判断语句,输出的是一个布尔类型值,true或者false。
1.if(Undefined)
结果为false,
if(undefined) {
console.log('true')
}//false
2.if(Null)
结果为false
if(null){
console.log('true')
} //false
3.if(Boolean)直接判断
if(true) {
console.log('true')
}// true
if(false) {
console.log('true')
}// false
4.if(Number)
+0, −0, 或者 NaN 为 false, 其他为 true
var a =1
if(a) {
console.log('true')
}// true
a =0
if(a){
console.log('true')
}// false
a =-0
if(a){
console.log('true')
}//false
a=NaN
if(a){
console.log('true')
}//false
5.if(String)
空字符串为 false,其他都为 true
if('hello'){
console.log('true')
} // true
if(' '){
console.log('true')
} // true ,不是空字符串,中间有空格
if(''){
console.log('true')
} // false
if('0.00'){
console.log('true')
}// true
6.if(Object)
结果为true
if([1,3,4]){
console.log('true')
} // true
function f(){
var b = 1 + 2;
return b;
}
if(f()){
console.log('true')
} //true
a==b的判断
同类型之间的相等判断很简单,之间比较,所以以下只讨论不同类型之间的判断。
1. string == number
结果为toNumber(a) == b,当a无法转换为number时判断相等为false
"" == 0 //true
" " == 0 //true
"hello" == 0 //false "hello"->NaN
"hello" == 1 //false ''hello"->NaN
"2" == 2 //true "123"->123
2. Boolean == (any)
Boolean在相等运算时会转换为数值,true为1,false为0.
"" == true //false ""->0
"" == false //true
" " == true //false " "->0
"hello" == true //false "hello"->NaN
1 == true //true
0 == false //true
undefined == false //false
undefined == true //false
null == false //false
null == true //false
3. object == number/string
object会试图使用valueOf和toString转换后比较
var obj = {
a: 0,
valueOf: function(){return 1}
}
obj == 1 //true
[] == 0 //true
[2] == 2 //true
4.null == undefined //true 特殊情况
toNumber的几种情况
undefined -->NaN
null -->0
boolean-->true:1,false:0
string-->"abc":NaN,"123":123