如果and
高于or
,1||alert(1)&&alert(2)
会提醒,但没有
我认为它们是相同的
答案 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