为什么这个"4 | 2 | 4 | 1 | 10"在JavaScript中返回15?

Jan*_*ray 1 javascript

我只是在尝试并尝试将其放入控制台:

4 | 2 | 4 | 1 | 10
Run Code Online (Sandbox Code Playgroud)

在控制台中返回15 ..

4 | 2 | 4 | 3 | 1
Run Code Online (Sandbox Code Playgroud)

在控制台中返回7 ..

我在Chrome和Firefox上试过了.

为什么?

我刚开始学习JavaScript ......也许我在这里错过了一个概念?

T.J*_*der 6

|JavaScript中操作是按位的整数或运营商.所以它正在对你给它的位进行OR运算,结果为15.

如果该位置中的任何一个输入位置位,则按位OR运算取值中的每一位并设置结果中的相应位.所以

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(||)非常强大,比许多其他语言更强大.