我只是在试验并尝试将其放入控制台:
4 | 2 | 4 | 1 | 10
在控制台中返回 15 。
4 | 2 | 4 | 3 | 1
在控制台中返回 7 。
我在Chrome和Firefox上试过了。
为什么吗
我刚开始学习JavaScript ......也许我在这里错过了一个概念?
答案 0 :(得分:6)
JavaScript中的|
运算符是bitwise integer OR operator。所以它对你给它的位进行OR运算,得到15。
如果设置了该位置的输入位的 ,则bitwise OR operation取值中的每一位并设置结果中的相应位。所以
4 is 0100 in binary 2 is 0010 4 is 0100 1 is 0001 10 is 1010 ---- 1111 = 15 decimal
更新:在对您的问题发表评论时,您说您期待true
而不是15
。如果是这样,您需要逻辑 OR运算符||
,而不是按位运算符,尽管||
也可能会让您惊讶于它返回的内容(4 || 2 || 4 || 1 || 10 = 4
,而不是true
),因为JavaScript的逻辑OR(||
)是curiously powerful,比其他许多语言都要多。
答案 1 :(得分:3)
您使用的是OR operation
如果你想要一个真/假,或者你想要||。
答案 2 :(得分:2)
|
运算符是按位或运算符。
|
运算符将每个操作数的二进制数字对齐,如果该地方有一个或两个操作数都有1
,则返回1
。
例如,让我们看看3 | 10
做了什么:
3
是二进制的11
。
二进制文件10
为1010
。
排队,你得到
3 - 0011
10 - 1010
Result - 1011
结果1011
为十进制11
,因此此示例的结果为11
。
以下是您的问题4 | 2 | 4 | 1 | 10
4 - 0100
2 - 0010
4 - 0100
1 - 0001
10 - 1010
| ======
1111
而1111
是15
的二进制,这是你得到的结果。
按位或运算符以及其他bit manipulation operators通常用于低级计算。例如,您可以使用按位运算符完全实现乘法,加法和除法等算法。