&&的优先级高于||

时间:2022-11-26 11:20:44
四个变量一起的时候,可以很好的举出例子
var a=true || false && false || false;  // true
var a=(true || false) && (false || false);  // false

但是3个运算变量似乎举例不出来。


var a=3 && 4 || 5;     //  4
var a=3 && (4|| 5) ;    //  4
这里就觉得&&和||的优先级谁高谁低不重要,结果都一样,有人可以举出反例吗?

7 个解决方案

#1


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

#2


这不是优先级谁高谁低的问题。而是&&和||的另外一个特性的问题。

首先
表达式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了吧

#3


那关优先级的事。

#4


引用 2 楼 jslang 的回复:
这不是优先级谁高谁低的问题。而是&&和||的另外一个特性的问题。

首先
表达式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了吧



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

运算优先级得问题

#5


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

#6


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

#7


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

#1


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

#2


这不是优先级谁高谁低的问题。而是&&和||的另外一个特性的问题。

首先
表达式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了吧

#3


那关优先级的事。

#4


引用 2 楼 jslang 的回复:
这不是优先级谁高谁低的问题。而是&&和||的另外一个特性的问题。

首先
表达式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了吧



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

运算优先级得问题

#5


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

#6


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

#7


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