4

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

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 吗?

好的,我知道当优先级不清楚时我们总是应该使用括号,但是应该有一个规则或解释正在发生的事情?

4

4 回答 4

2

根据您链接到的表,*(5)的优先级高于>>(7);该表中首先列出了较高的优先级,尽管令人困惑的是,较低的数字用于表示较高的优先级。

于 2010-08-25T15:47:29.377 回答
2

如果我查看该表,则*运算符的优先级高于>>,因此*绑定得更早。它被解释为:

  • 0x11 >> 1 * 2
  • 0x11 >> (1 * 2)
  • 0x11 >> (2)
  • 0x11 >> 2
于 2010-08-25T15:48:30.783 回答
1

根据您链接的表格,乘法的优先级(5)高于位移(7)。

从表的顶部:

下表按从最高 (1) 到最低 (17) 的优先级排序。

于 2010-08-25T15:48:16.367 回答
1

不,它说 的*优先级高于>>。:)

于 2010-08-25T15:48:19.983 回答