JavaScriptでビット演算子をいじっていますが、注目すべきことが1つあります。
2つの入力ビットの1つがである場合、ビット単位または演算子は出力ビットとして返されます。したがって、効果がないため、これを行うと常にが返されます。11x | 0x| 0
( 1 | 0 ) === 1( 0 | 0 ) === 0
しかし、計算するInfinity | 0と、が得られ0ました。これは私の意見では驚くべきことです。なぜなら、上記の方法で取得する必要があるからInfinityです。結局のところ、( x | 0 ) === x。
ECMAscript仕様のどこでこれが明示的に定義されているのかわからないので、正確には何を意味するのか疑問に思いました( Infinity | 0 ) === 0。おそらくその方法Infinityはメモリに保存されていますか?もしそうなら、それでも| 0操作を行うとそれが戻るのに0何| 0もすべきではないということはどうしてですか?