JavaScript运算符优先逻辑让我很困惑

时间:2010-08-25 15:44:00

标签: javascript operators operator-precedence

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

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 个答案:

答案 0 :(得分:2)

根据您链接的表格,*的优先级(5)高于>>(7);在该表中首先列出了更高的优先级,虽然令人困惑,但较低的数字用于表示更高的优先级。

答案 1 :(得分:2)

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

  • 0x11 >> 1 * 2
  • 0x11 >> (1 * 2)
  • 0x11 >> (2)
  • 0x11 >> 2

答案 2 :(得分:1)

根据您链接的表,乘法具有比位移(7)更高的优先级(5)。

从表格的顶部开始:

  

下表按最高(1)到最低(17)优先顺序排列。

答案 3 :(得分:1)

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