“|”(单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 | x
是x
,对于任何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。