2010-08-25 117 views
4

运算符优先级表我能找到的是:JavaScript的运算符优先级逻辑混淆了我

https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence

根据表,这两个“>>”和“*”是左到右的关联,以及'>>' 具有更高的优先级,所以我觉得 一个>> b * C应解释(A >> b)* C 然而,我在Firefox(使用Firebug)测试,告诉我:

0x11 >> 1  .... 8 
0x11 >> 1 * 2 .... 4 

这使我困惑不已,应该是16呢?

好的,我明白,当优先级不明确时,我们总是应该使用括号,但是应该有规则或解释发生了什么?

回答

2

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

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

,因为它是我的错误认识,这不我迷惑了大约一个小时。我很愚蠢,谢谢所有这么多回复,答案是最快的答案,对不起,如果这不公平... – ccppjava 2010-08-25 16:30:08

+0

哇,你不愚蠢,最高优先级是最低值。这根本没有意义。有些人真的只是想看世界烧... – MaiaVictor 2013-05-23 08:16:16

+0

@Dokkat这个映射是有道理的,当最高优先级的数字不是1时,这是令人困惑的。在比赛中,当你排名最高时(1),你赢了。 – Lekensteyn 2013-05-23 09:15:41

2

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

+0

谢谢你......我的错误... – ccppjava 2010-08-25 15:49:47

1

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

从表的顶部:

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

1

不,它说*>>具有更高的优先级。 :)