那你知道为什么
a=3 && 4 || 5;
a=3 && (4|| 5);
的结果都是4,而不是别的值呢?

解决方案 »

  1.   

    这不是优先级谁高谁低的问题。而是&&和||的另外一个特性的问题。首先
    表达式A && 表达式B 的工作原理是:如果A的值为false(或A的值可以被当做为false)就返回A的值并且不执行表达式B,否则执行表达式B并且返回B的值
    表达式A || 表达式B 的工作原理是:如果A的值为true(或A的值可以被当做为true)就返回A的值并且不执行表达式B,否则执行表达式B并且返回B的值javascript中0 "" null undefined会被当做为false,其实的值都可以被当做为true
    所以3 4 5都被当做为true这下知道为什么的结果都是4了吧
      

  2.   

    我当然知道逻辑与和逻辑或的原理
    a=3 && 4 || 5;
    我是说出现这么一个表达式的时候,是先3 && 4的结果得出来以后再与5进行逻辑或运算,
    还是4和5先逻辑或,然后结果和3逻辑与运算优先级得问题
      

  3.   

    a=3 && 4 || 5;
    当然是先3 && 4的结果得出来以后再与5进行逻辑或运算,
      

  4.   

    明白了,你是要3个运算变量举例是吧
    alert(3 || 4 && 5); //3
    alert((3 || 4) && 5); //5
      

  5.   

    var a=0 && 4 || 5;     //  5
    var a=0 && (4|| 5) ;    //  0