• js中两个!!的理解


    在js中经常有两个!!出现,经常让人难以理解

     (function () {
            var a = 10;
            var b = 20;
    
            function add(num1, num2) {
                var num1 = !!num1 ? num1 : a;
                var num2 = !!num2 ? num2 : b;
               
    
                return num1 + num2;
            }
    
            window.add = add;
        })();
    
        var sum=add("10", "20");
        console.log(sum);

    要理解上面的var num1 = !!num1 ? num1 : a;首先要明白其他变量类型和Boolean类型的相互转化。

    0、-0、null、""、false、undefined 或者 NaN转化为false,其他为true

    如下都是false

    var myBoolean=new Boolean();
    var myBoolean=new Boolean(0);
    var myBoolean=new Boolean(null);
    var myBoolean=new Boolean("");
    var myBoolean=new Boolean(false);
    var myBoolean=new Boolean(NaN);

    而下面都是true

    var myBoolean=new Boolean(1);
    var myBoolean=new Boolean(true);
    var myBoolean=new Boolean("true");
    var myBoolean=new Boolean("false");
    var myBoolean=new Boolean("Bill Gates");

    具体参考http://www.w3school.com.cn/js/js_obj_boolean.asp

    根据上面的转化规律来看var num1 = !!num1 ? num1 : a;,如果num1是undefined,null,那么!num1是true,!!num1是false,以此可以看出这句代码的意思是如果num1不是undifined和null则取参数的值num1,否则取变量a的值。这里并不能判断num1是否是数值,所以传入字符串也是可以计算的,计算结果是两个字符串相加"1020",如果传入的都是数值,则会把数值相加,结果是30

    还可以参考http://blog.csdn.net/dyllove98/article/details/8590638

     (function () {        var a = 10;        var b = 20;
            function add(num1, num2) {            var num1 = !!num1 ? num1 : a;            var num2 = !!num2 ? num2 : b;           
                return num1 + num2;        }
            window.add = add;    })();
        var sum=add("10", "20");    console.log(sum);

  • 相关阅读:
    C# SqlTransaction事务,先从后主
    去除HTML标记
    GIT拉取问题
    QQ音乐API
    解决UEditor编辑器禁用时点击文本编辑器会多加一个字符问题
    UEditor编辑器增加placeholder提示
    C# List去重及优化建议
    ref和out解析
    时间标准格式转换及数值的ToString的格式化
    没有被“怼”,顺利通过华为Android三面,看看面试官都问了我什么?
  • 原文地址:https://www.cnblogs.com/lidaying5/p/8467327.html
Copyright © 2020-2023  润新知