“|”(单pipe道)在JavaScript中做什么?

console.log(0.5 | 0); // 0 console.log(-1 | 0); // -1 console.log(1 | 0); // 1 

为什么0.5 | 0 0.5 | 0返回零,但任何整数(包括负数)返回input整数? 单pipe(“|”)做什么?

这是一个按位或 。
由于按位操作只对整数有意义,所以0.5被截断。

0 | x 0 | xx ,对于任何x

位比较是如此简单,这几乎是不可理解的;)检查出这个“nybble”

  8 4 2 1 ------- 0 1 1 0 = 6 (4 + 2) 1 0 1 0 = 10 (8 + 2) ======= 1 1 1 0 = 14 (8 + 4 + 2) 

按位ORing 6和10会给你14:

  alert(6 | 10); // should show 14 

非常混乱!

单个pipe道是按位或者 。

对每对比特执行OR操作。 如果a或b是1,则OR b产生1。

JavaScript会截断按位运算中的任何非整数,因此其计算结果为0|0 ,即0。