JavaScript操作符优先级逻辑让我感到困惑
我可以找到的运算符优先级表是: 根据该表,“>>”和“*”都是从左到右关联的,“>>”具有更高的优先级,所以我认为 a>>b*c应解释为(a>>b)*c 但是,我在Firefox中的测试(使用Firebug)告诉我:JavaScript操作符优先级逻辑让我感到困惑,javascript,operators,operator-precedence,Javascript,Operators,Operator Precedence,我可以找到的运算符优先级表是: 根据该表,“>>”和“*”都是从左到右关联的,“>>”具有更高的优先级,所以我认为 a>>b*c应解释为(a>>b)*c 但是,我在Firefox中的测试(使用Firebug)告诉我: 0x11 >> 1 .... 8 0x11 >> 1 * 2 .... 4 这让我很困惑,应该改为16吗 好的,我知道当优先级不明确时,我们总是应该使用括号,但是应该有一个规则或解释发生了什么?根据您链接的表格,*的优先级(5)高
0x11 >> 1 .... 8
0x11 >> 1 * 2 .... 4
这让我很困惑,应该改为16吗
好的,我知道当优先级不明确时,我们总是应该使用括号,但是应该有一个规则或解释发生了什么?根据您链接的表格,
*
的优先级(5)高于>
(7);较高的优先级列在该表的第一位,但令人困惑的是,较低的数字表示较高的优先级。根据您链接的表,乘法的优先级(5)高于位移位(7)
从表格顶部开始:
下表按优先级从最高(1)到最低(17)的顺序排列
不,它说
*
的优先级高于>
:) 如果我查看该表,*
运算符的优先级高于>
,因此*
绑定得更早。它被解释为:
0x11>>1*2
0x11>>(1*2)
0x11>>(2)
0x11>>2