js中if推断语句实行缘由--数据类型转换道理

媒介:

置信我们程序员日常平凡写代码用的最多的逻辑就是if语句了吧,可你晓得他的道理是什么吗,实在这跟Boolean()这个要领有关,此要领为自动实行(在须要剖断Boolean的语句中中自动实行),这些转换划定规矩对明白if掌握语句自动实行响应的Boolean转换非常重要,

这是我们日常平凡所写的代码

    var a = "auto"
    if(a){
        console.log("实行")
    }
    

实在实行起来是如许,明白一下

    var a = "auto"
    if(Boolean(a)){
        console.log("实行")
    }

如许实在就好明白了,每一个范例的值实在都可以转换为Boolean值,有肯定的划定规矩,接下来我们看看具体操作

取证

将须要转换的数据传递给Boolean()函数

  • Boolean: 毋庸置疑true就是true,false就是false,然则new Boolean这里有坑

      var boolean1 = true;  // true;  
      var boolean2 = false; // false; 
      console.log(Boolean(boolean1));
      console.log(Boolean(boolean2));

    // 这里坑来了 Boolean()是返回布尔值,new Boolean()是返回布尔对象(对象内里的值为false,)

      var x = Boolean(false);
      if (x) {
        // 这里的代码不会被实行
      }
      
      var x = new Boolean(false);
      if (x) {
        // 这里的代码会被实行
      }
    
    
    

注重不要将基础范例中的布尔值 true 和 false 与值为 true 和 false 的 Boolean 对象弄混了。不要在应当运用基础范例布尔值的处所运用 Boolean 对象。

    var x = Boolean(expression);     // 引荐(Boolean值)
    var x = new Boolean(expression); // 不引荐,Boolean对象里的值不管是true照样false,只需对象有值都邑剖断为true,if语句中都邑实行、
  • String: 只需不是空字符串(没有任何内容),任何非空字符串(包括空格) 都邑转换为true
    var str1 = "";  // "" --> false
    var str2 = " "; // " " --> true;
    var str3 = "abc"; // " " --> true;
    console.log(Boolean(str1));
    console.log(Boolean(str2));
    console.log(Boolean(str3));

  • Number: 只要0和NaN会转换为false,其他都邑转换为true
    var num1 = 0;  //false
    var num2 = -1; //true
    var num3 = 1;  //true
    var num4 = NaN; //false
    console.log(Boolean(num1));        
    console.log(Boolean(num2)); 
    console.log(Boolean(num3));       
    
    

  • null、undefined: 都邑转换为false
    var n = null;  //false
    var u = undefined;  //false
    console.log(Boolean(n)); 
    console.log(Boolean(u));  
    

总结:

false / “” / NaN / 0 / null / undefined 都邑转换为 false

注重 Boolean() 和 new Boolean()的区分

前者天生布尔值,后者天生布尔对象,后者不引荐运用

参考:

大部分取经于js高程红宝书26页,3.4.4章节(Boolean范例的引见)

new Boolean()的坑取经于
MDN中Boolean的形貌

    原文作者:早饭君
    原文地址: https://segmentfault.com/a/1190000018939497
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞