我在 JavaScript 中摆弄按位运算符,我发现有一件事很了不起。
如果两个输入位之一是 ,则按位或运算符作为输出位返回。所以这样做总是返回,因为没有效果:1
1
x | 0
x
| 0
( 1 | 0 ) === 1
( 0 | 0 ) === 0
但是,当我计算 时Infinity | 0
,我得到了0
。这在我看来是令人惊讶的,因为通过上面的一个应该得到Infinity
. 毕竟,( x | 0 ) === x
。
我在 ECMAscript 规范中找不到明确定义的地方,所以我想知道( Infinity | 0 ) === 0
. 是不是可能Infinity
是存储在内存中的方式?如果是这样,怎么可能仍然是执行| 0
操作导致它返回0
而不| 0
应该执行任何操作?