为什么运算符优先级“和”高于“或”

时间:2015-12-30 04:26:57

标签: javascript

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

中的

如果and高于or1||alert(1)&&alert(2)会提醒,但没有

我认为它们是相同的

3 个答案:

答案 0 :(得分:0)

看表达式:

1||0&&2

表达式与以下内容相同:

1||(0&&2)//because && has greater precedence than ||

在这种情况下,1是真值,因此得到1。

因此,使用优先规则,这不会像下面那样:

(1||0)&&2//because || has lesser precedence than &&

答案 1 :(得分:0)

  

为什么运算符优先级and高于or

因为这就是语言的定义方式。如果它困扰你,那么请随意使用括号来使分组清晰。

许多其他语言以这种方式工作。

记住具有更高优先级的规则是将&&视为乘法,将||视为加法(在逻辑意义上它们是)。当然,乘法具有比加法更高的优先级(绑定更紧密)。

答案 2 :(得分:0)

原因很简单,乘法在加法之前出现,我希望你知道...... and是一个逻辑积,or是一个逻辑加法。

因此,使用逻辑运算符,您可以重写操作(a||b&&c),例如:

a + b * c

如果a,b和c是布尔值并且您应用了正确的布尔运算,它会为您提供正确的结果。如果您愿意,可以将其转换为一位二进制:

&& => 1 * 1 is true, all others are false

|| => 0 + 0 is false, all others are true