2011-06-12 87 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

+|具有更高的優先級,因此您需要放入括號以獲得所需的評估順序。