JavaScript: true >> 0 = 1 是怎么来的?

JavaScript: How does true >> 0 = 1?

我一直在四处寻找答案,但我所能找到的只是为什么

true == 1 = true  
false == 0 = true

我仍然不明白 JavaScript 如何获取 Boolean 类型并将其添加到 int 类型

true >> 0 = 1 
false >> 1 = 0

首先,true 在 JavaScript 中隐式转换为 1(在控制台中尝试 Number(true) + 1,这将产生 2)。

此外 >> 数字 向右移动,丢弃移出的位。因此 true >> 0 除了将 true 隐式转换为 1 之外什么都不做(因为没有位被移动)。

对于第二个例子,false被隐式转换为0因为移位的位被丢弃,移位对结果没有影响.试试false >> 1000,还是0.


可以找到更好的解释here,感谢@adam-beck,他还补充了另一个非常好的观点:

If you don't know much about bit shifting, bitwise operators, or even working with binary numbers, know that when you shift ( >> or <<) by 0 you aren't changing the number at all: 152 >> 0 === 152