2
最近、parseIntの代わりにビット演算子を使い始めました。parseIntの代わりにビット演算子を使用しないのが良い理由はありますか?
> 70.5|0
70
> "70.5"|0
70
> 0xFF|0
255
> "0xFF"|0
255
すべてを整数に変換します。これには時には有用な副作用があります。
> 1+undefined|0
1
> 1+parseInt(undefined)
NaN
これはできません。
> "16px"|0
0
> parseInt("16px",10)
16
他の演算子と同じ効果があります。
> 70.5^0
70
> ~~70.5
70
> 70.5<<0
70
parseInt IMOの短い表記です。
'parseInt'を使うのは明らかです。そうしないと、トリックが何をしているのかを説明するためのコメントを書き終えることになるので、誰もそれを構文エラーと混同することはありません。 – Marcelo
intをパースするのはとてもいい、短く、あまり明白ではありません。それが意味をなさない場合でも他のものを0に変換する:あなたが有用であると説明する副作用(未定義で使用される場合)は、私が「望ましくない」と言う副作用です。あなたはちょうど実際に0が元々解析された?見つけにくいバグを紹介する良い方法です。 – nnnnnn
追加するもう1つの注記。ビット単位のORを使用すると、32ビットを超える数は完全に異なったものになります。例: '50000000000 | 0; // -1539607552'を返します。 –