zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    仿MSN小类别滑动效果
    pku1674 Sorting by Swapping
    pku1456 Supermarket
    pku1083 Moving Tables
    pku1125 Stockbroker Grapevine
    pku2232 New StoneForfexCloth Game
    如何低头前进
    和两年前一样
    股票亏了
    早上选举了
  • 原文地址:https://www.cnblogs.com/deepalley/p/14153621.html
Copyright © 2011-2022 走看看