我一直在寻找答案但是,我能找到的就是为什么
true == 1 = true
false == 0 = true
我仍然不了解JavaScript如何采用Boolean
类型并将其添加到int
类型
true >> 0 = 1
false >> 1 = 0
答案 0 :(得分:1)
首先,true
在JavaScript中隐式转换为1
(在控制台中尝试Number(true) + 1
,这会产生2
)。
此外>>
将数字的位向右移位,丢弃的位被移除。因此true >> 0
除了隐式转换 true
到1
之外什么都不做(因为没有位移位)。
对于第二个示例,false
被隐式转换为0
和,因为转移的位被丢弃,转移不会对结果产生影响。试试false >> 1000
,它仍然是0
。
可以找到更好的解释here,感谢@ adam-beck,他还增加了另一个非常好的观点:
如果您对位移,按位运算符或甚至使用二进制数不太了解,请知道当您将(>>或<<)移位0时,您不会根本改变数字:
152 >> 0 === 152