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

标签 javascript

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

4 | 2 | 4 | 1 | 10

在控制台中返回 15..

4 | 2 | 4 | 3 | 1

在控制台中返回 7..

我在 Chrome 和 Firefox 上试过了。

为什么?

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

最佳答案

JavaScript 中的 | 运算符是 bitwise integer OR operator .所以它对你给它的位进行 OR 运算,结果是 15。

A 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 的逻辑或 (||)是curiously powerful ,比许多其他语言更是如此。

关于javascript - 为什么这个 "4 | 2 | 4 | 1 | 10"在 JavaScript 中返回 15?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388525/

相关文章:

javascript - 在页面加载时持续检查 Oracle 记录

javascript - 我的表单提交和 jquery 问题

javascript - 使用jQuery根据表中 `tr`的值隐藏一个 `td`

javascript - 怎么办|和 + 是否有将字符串转换为数字的技巧?

javascript - 创建 Angular 指令说未定义不是函数

javascript - 进行字符串替换时如何复制大小写模式?

javascript - 使用javascript在div中通过标签选择元素

javascript - 如何在引用外部 html 的 while 循环中添加输入 id 值(基于迭代)?

javascript - knockout.js 将表单保存到 json

Java jackson : deserialize complex polymorphic object model: JsonMappingException: Unexpected token (START_OBJECT), 应为 VALUE_STRING