2011-06-12 53 views
0

似乎对“甚至”号这只是工作:为什么这个['3'| 0 + 1]按位不起作用?

"8"|0 + 1 // 9 
"3"|0 + 1 // 3 
("3"|0) + 1 // 4 

"3"|0转换为整数3

那么这里发生了什么?
为什么第二个例子在JS中像这样行事?

+2

https://developer.mozilla.org/en/JavaScript/Reference/operators/operator_precedence – Oded 2011-06-12 20:10:06

+0

@Oded:显然我在读的https://developer.mozilla .org/en/JavaScript/Reference/operators/bitwise_operators,而不是仅转到您提到的页面。甜! 10x – vsync 2011-06-12 20:19:24

回答

8

+的优先级高于|。

所以它的分析是这样的:

"8" | (0 + 1) = "8" | 1 = 9 
"3" | (0 + 1) = "3" | 1 = 3 
+0

不错!甚至没有想到优先级已经改变 – vsync 2011-06-12 20:17:11

+0

+已经高于|自远古以来---至少,C至少:(见http://www.difranco.net/cop2220/op-prec.htm)你在想什么语言? – 2011-06-12 22:29:36

+0

我只知道JS。和我的数学很烂,所以据我所知+和 - 是排名最低的...... – vsync 2011-06-13 08:08:20

6

+|具有更高的优先级,因此您需要放入括号以获得所需的评估顺序。