美文网首页
关于if(xx)和 a==b的判断

关于if(xx)和 a==b的判断

作者: 巴依老爷_0b46 | 来源:发表于2018-05-02 14:32 被阅读0次

    一.if(XX)的判断

    对于括号里的表达式,非布尔类型会被强制转换为布尔类型.
    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 输出true
    }
    if (false){
       console.log("true"); //false 不输出
    }
    

    4.当if括号里面的表达式为字符串时, ""空字符串为false,其他为true;

    if(""){
        console.log("true"); //false 不输出
    }
    if("  "){
       console.log("true"); //true 输出true
    }
    

    5.当if括号里面的表达式为Object时,为true;

    if(Object){
        console.log("true");  //true  输出true
    }
    

    6.当if括号里面的表达式为Number时, +0,-0,Nan为false,其他为true

    if(+0){
        console.log("true");  //false  不输出
    }
    if(1){
        console.log("true");  //true 输出true
    }
    

    原理

    类型 结果
    undefined false
    null false
    Boolean 直接判断
    string ""(空字符串)为false,其他为true
    Object true
    Number +0,-0,Nan为false,其他为true

    二.aa==bb的判断

    在javascript判断两个变量值是否相等,可以使用==(相等)操作符
    == 简单判断2个变量值是否相等,变量类型不一致时,会做类型转换,即忽略变量的类型进行比较
    1.String==Number --->(toNumber(String)==Number )

    "" = 0 ; //true,因为“”转换为0
    "  " = 0 ; //true  "    "转换为0  
    "hello" == 1  //false  ,因为"hello"转换为NaN
    "hello" == 0 //false, 同理
    

    2.Boolean==(any) --->(toNumber(Boolean)==(any))

    1==true; //true,因为true转换为1
     0==false;//true ,因为false转换为0
    "0" == true  //false
    "0" == false  //true
    "00" == false  //true
    "0.00" == false  //true
    

    3.Object==String/Number---->(toPrimitive(Object))

    对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结
    果 
    {} == true  // false
    [] == true  //false
    var obj = { 
      a: 0, 
      valueOf: function(){return 1} 
    } 
    obj == "[object Object]"  //false
    obj == 1  //true
    obj == true  //true
    

    4.null==undefined,//true

    toNumber

    类型 结果
    Undefined NaN
    null 0
    Boolean ture->1,false->0
    string “abc” -> NaN, “123” -> 123

    如果两个值类型相同,则执行严格相等的运算
    如果两个值的类型不同
    如果一个是null,一个是undefined,那么相等
    如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
    如果一个值是true/false则将其转为1/0比较
    如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
    其它就不相等了

    相关文章

      网友评论

          本文标题:关于if(xx)和 a==b的判断

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