我可以找到的运算符优先级表是:

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
  • 10-08 15:24