2019-04-07

2019-04-07  本文已影响0人  蓝子_23d0

JS中关于if(xx)与a==b的判断

if(xx)的判断

1.if(number)

当if中是number为+0、-0或者NaN为false,其余都为true

var a = 5
if(a){
    console.log('true')
} // 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

  结果为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


参考文章

上一篇下一篇

猜你喜欢

热点阅读