var i=10;
i>0 && (i=0);
alert(i) //i值为0
上面是我今天看某个代码时遇到的,当然做了简化,这里&&怎么实现判断效果的,什么原理呢?

解决方案 »

  1.   

     var i = -10;
        i > 0 && (i = 0);
        alert(i) //i值为-10&&运算符当第一个条件为真时,才会判断第二个条件,当第一个条件为false时,根本不做后面的判断,
    所以 i > 0 && (i = 0);
    这句相当于 
    if (i>0)
    {
       i=0;
    }
      

  2.   

    逻辑运算的短路
    i>0 && (i=0);
    这里有两个逻辑判断,代码运行时先判断第一个 i>0 为true
    但不表示整个表达式为true ,所以继续运行判断 (i=0)如果i的初始值为0的话,i>0 为false,因为是 && 判断,所以只要第一个为false,整个表达式必然为false。所以就没有必要进行第二个判断,为了节省效率。所以这时(i=0)就不会被运行
      

  3.   

    其实就是这样:
    var i = 1;
    i && alert(i)当&&左边的值为true时,右边式子才会运行  (&&结合性是从左到右的)反之不运行
      

  4.   

    代码还是写规范点好,毕竟是写给人看的
    var i = 10;
    if(i > 0){
        i = 0;
    }
    alert(i)