if(xx)的判断
1.if(number)
if(number)即括号内为数字类型,0、NaN为false,其他值为true
var a = 5
if(a){
console.log('ture')
}//true
a = 1
if(a){
console.log('true')
} // true
a = 0
if(a){
console.log('true')
} // false
a = -1
if(a){
console.log('true')
} //false
a = NaN
if(a){
console.log('true')
} //false
2.if(string)
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')
}
3.if(boolean)
if(boolean)即括号内为布尔类型,直接判断
if(true){
console.log('true')
} // true
if(false){
console.log('true')
} // false
4.if(object)
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
5.if(undefined)
if(undefined),为false
if(undefined){
console.log('true')
} //false
6.if(null)
if(null),为false
if(null){
console.log('true')
} //false
a==b的判断
对于相同类型的a、b,相等的判断较简单。以下主要讨论不同数据类型的a、b之间进行相等运算时的判断。
1.string == number
先将string转换成number类型,再判断。
"" == 0 //true
" " == 0 //true
"hello" == 0 //false
"hello" == 1 //false
"2" == 2 //true
2. boolean == (any)
boolean在相等运算时会转换为数值,true为1,false为0。
"" == true //false
"" == false //true
" " == true //false
"hello" == true //false
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