这是一个按位运算符...引用 page:
按位运算符将其操作数视为 32 位(零和一)的序列,而不是十进制、十六进制或八进制数。例如,十进制数字 9 的二进制表示为 1001。按位运算符在这种二进制表示上执行操作,但它们返回标准的 JavaScript 数值。
发生的情况是,运算符将数字视为 32 位整数;所以 5.123 被视为:
0000 0000 0000 0000 0000 0000 0000 0101
(小数部分被剔除),0视为
0000 0000 0000 0000 0000 0000 0000 0000
然后 OR 函数将两者进行比较,如果任一数字为 1,则写入 1。
因此,使用带十进制数的按位或 zeeo 本质上是一种丢弃小数部分并保留整数部分的方法。
你的另一个例子是:
0000 0000 0000 0000 0000 0000 0000 0101 (5)
0000 0000 0000 0000 0000 0000 0000 0010 (2)
--------------------------------------- ORed
0000 0000 0000 0000 0000 0000 0000 0111 (7)
还有 4 的例子:
0000 0000 0000 0000 0000 0000 0000 0101 (5)
0000 0000 0000 0000 0000 0000 0000 0100 (4)
--------------------------------------- ORed
0000 0000 0000 0000 0000 0000 0000 0101 (5)
您可以使用它来转换以丢弃数字的小数部分 - 请参阅Using bitwise OR 0 to floor a number