我可以找到的运算符优先级表是:
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence
根据表格,“>>”和“*”都是从左到右的关联,“>>”具有更高的优先级,所以我认为
a >> b * c 应该解释为 (a >> b) * c
但是,我在 Firefox 中的测试(使用 Firebug)告诉我:
0x11 >> 1 .... 8
0x11 >> 1 * 2 .... 4
这让我很困惑,应该是 16 吗?
好的,我知道当优先级不清楚时我们总是应该使用括号,但是应该有一个规则或解释发生了什么?
最佳答案
如果我查看该表, *
运算符的优先级高于 >>
,因此 *
绑定(bind)更早。它被解释为:
0x11 >> 1 * 2
0x11 >> (1 * 2)
0x11 >> (2)
0x11 >> 2