美文网首页
JS if 变量判断的高阶用法

JS if 变量判断的高阶用法

作者: DaphX | 来源:发表于2022-03-18 14:56 被阅读0次

    一、if(变量)的用法

    if条件语句非常简单,如下:

    if (条件) {
        如果条件为 true 时执行的代码
    }
    

    一般『条件』是由逻辑表达式组成,比如:

    if (age > 20 && name == '张三') {
        return "helloWorld"
    }
    

    但是除了这种常规的条件判断之外,还有一些非常规的,比如:

    if(age){
      return "helloWorld"
    }
    

    这种判断『变量』的方式,具体表达什么含义呢?如何使用?以下几种场景,具体分析 :

    1. 当if括号里面的表达式Boolean时,直接判断

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

    2.当if括号里面的表达式为Number时,分两种情况,当number为+0,-0,NaN的时候,为false;其他为true。

    if(0){
      console.log("true"); //false
    }
    if(NaN){
      console.log("true"); //false
    }
    if(1){
      console.log("true"); //true
    }
    

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

    if(""){
      console.log("true"); //false
    }
    if("abc"){
      console.log("true"); //true
    }
    

    4.当if括号里面的表达式为Undefined时,为false;

    if(Undefined){
      console.log("true"); //false
    }
    

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

    if(null){
      console.log("true"); //false
    }
    

    toBoolean

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

    二. a==b的判断

    ==是比较两个值是否相等,相同类型直接比较,不同类型的话,看情况转换。

    String==Number --->toNumber(String)==Number

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

    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
    

    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
    null==undefined,//true
    

    ==知识点

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

    toNumber

    类型 结果
    Undefined NaN
    Null 0
    Boolean ture->1,false->0
    String (""-->0, " "-->0 )空字符串与空白字符串转换数值0,abc"->NaN,"123"->123

    相关文章

      网友评论

          本文标题:JS if 变量判断的高阶用法

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