2014-02-22 76 views
-1

我在瀏覽器控制檯上檢查了一些東西,意外地使用了|而不是||(OR)。什麼是|運算符在JavaScript中?

該運算符的功能是什麼?我做了一些谷歌搜索,但沒有涉及到相關。

2 | 4 
6 
1 | 2 
3 
4 | 5 
5 
8|10 
10 
8 | 10 
10 
10 | 8 
10 
2 || 4 
2 
+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators – elclanrs

+0

相關:http://stackoverflow.com/questions/5690512/whats-the-difference-between - 和式的JavaScript,http://stackoverflow.com/questions/7051811/what-does-the-operator-do?lq=1,http://stackoverflow.com/questions/6194950/what-does-the -single-pipe-do-in-javascript?lq = 1 – user2864740

回答

0

| (按位或)

對每對位執行OR操作。 A或B的產率1,如果A或B是1事實 表OR操作是:

a b a OR b 
0 0 0 
0 1 1 
1 0 1 
1 1 1 


    9 (base 10) = 00000000000000000000000000001001 (base 2) 
    14 (base 10) = 00000000000000000000000000001110 (base 2) 
        -------------------------------- 
14 | 9 (base 10) = 00000000000000000000000000001111 (base 2) = 15 (base 10) 

按位或運算任何數x 0的產率X。

按位對任意數字x進行或運算-1會得到-1。

來源MDN

-1

雖然||是一個布爾邏輯或|是一個按位或。

4 I 5 = 100 | 101 = 101 = 5 
+0

現在我想知道爲什麼我的回答是downvoted。它短暫但正確。 – wumpz

3

這是按位或。 它在兩個操作數中逐個檢查每個位,如果兩個位中的一個置位,則輸出位將置位(1)。

例:var test = 5 | 3

5 - > 101(前導零這裏忽略)

3 - > 011

然後測試將是7(111)

0

二進制或

0 OR 0 - > 0

0 OR 1 - > 1

1或0 - > 1

1或1 - > 1

(易記 - 0或0 0給出任何其他情況下,可以提供1)

如果你有例如4 | 1 - > 4的二進制形式爲100,1爲001.然後100 | 001 - > 101(或十進制中的5)

此外,邏輯或(||)只是簡單地處理左右值和1和0,其工作原理與上述相同。

0

The |是一個按位或,而不是布爾OR ||

這意味着它會做什麼或像每2位爲二進制10和4是二進制的100,結果110

如果計算所有結果上面的二進制數,你會看到。

這是位掩碼或評估標誌有用。如果編程更接近硬件,則在設置寄存器位時通常會發現此問題,或者在通信時解析協議數據。

if (myVar | 0x2 > 0) { 
    // Bit two is set! 
} 

當然還有其他用途。

還有一個位與&工作方式相同,但ANDS位。