JavaScriptでビット演算子をいじっていますが、注目すべきことが1つあります。
2つの入力ビットの1つがである場合、ビット単位または演算子は出力ビットとして返されます。したがって、効果がないため、これを行うと常にが返されます。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
もすべきではないということはどうしてですか?