美文网首页
2019-04-07

2019-04-07

作者: 蓝子_23d0 | 来源:发表于2019-04-07 21:02 被阅读0次

    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


    参考文章

    相关文章

      网友评论

          本文标题:2019-04-07

          本文链接:https://www.haomeiwen.com/subject/hyreiqtx.html