js中!!的作用

最近在项目中js代码中看到如下代码:

if(!!r&&r.length>0){
    $("#order_list").empty().append("<option value=\"-1\">可选外呼项目</option>");
    for(var i=0;i<r.length;i++){
     $("#order_list").append("<option value=\""+r[i].workOrderId+"\">"+r[i].workOrderName+"</option>");
    }
   }

对!!不太理解,于是自己写了代码测试了一下发现,如下规律:

(1)若var r;(undefined)  var r = 0; var r="";    var r=null;则!r就表示true,(js内部原理,将这些类似于未定义,空值的都看作是false),此时!!r表示false;

(2)若var r = "abc"; var r = 1;等等这些本身就有值(或有意义的值),那么!r就表示false;!!r就表示true;(我们常用于这种情况,就像例子中r本身就属于这种情况,要不后面怎么会&& r.length呢)

谨以此提醒自己编码要小心善用,若有错误,欢迎批评指正!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。