js中有这么一句:
a=!a?0:a;
虽然我知道这是个三目符,但是 a=!a的判断怎么回事儿啊?

解决方案 »

  1.   

     a=!a 比较 
    如果相等 结果是0 
    否则 就是a
      

  2.   


    var a=false;
    a=!a?0:a;//==>a=(!a)?0:a;或者a=(!a?0:a)
    alert(a);如果a为真值,则赋a值为a本身,否则赋a值为0;=号为赋值,不是比较。
      

  3.   


    alert( !0 )
    alert( !1 )
    //a=!a?0:a;
    if( !a ){  // a值相反的boolean值
    a = 0;
    }else{
    a = a;
    }
      

  4.   


    嗯,对。明白了。现在的问题是这一句出现在上下文中,给你看看:
    function _CalcSrvFee(record){
    var sfr = record.getValue("SERVICE_FEE_RATE");
    var q = record.getValue("QUANTITY");
    var aq = record.getValue("APPROVE_QUANTITY");
    var f = record.getValue("FEEAMOUNT");
    var m = record.getValue("MAX_VALUE");
    var r1 = 0;
    var r2 = 0;
    sfr = !sfr?0:sfr;
    q = !q?0:q;
    aq = !aq?0:aq;
    f = !f?0:f;
    m = !m?0:m;
    r1 = q*f*sfr>m*sfr?m*sfr:q*f*sfr;
    r2 = aq*f*sfr>m*sfr?m*sfr:aq*f*sfr;
    record.setValue("FEE_AMOUNT",r1);
    record.setValue("APPROVE_FEE_AMOUNT",r2);
    return true;
    }
    是不是为了把它转化成数字,怕出错才这样处理的呢?
      

  5.   

    可能是为了特殊判断吧,比如说a值是0、未定义、null的时候就让a等于0,否则就等于原来的值
      

  6.   

    !a返回true or false
    如当a = 1
    则!a被转化成布尔值,是false
    当a = 0
    则!a被转化成布尔值,是true
    所以假如定义了a = 1
    则a = 1
    所以假如定义了a = 0
    则a = 0
    所以假如定义了a = null
    则a = 0