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