それなりブログ

とあるWebエンジニアのそれなりのブログ、JavaScript/Node.js/Python/PHP/ゲーム作成 など

[JavaScript] ビット演算は32ビットまで

JavaScriptのビット演算子が正しく扱えるのは
32ビットの値の範囲だけのようです

例えば、よく自分は parseInt の替わりに ~~(1の補数を2回) をしていますが
その範囲を超えると意図したように動きません

> ~~2147483647
2147483647
> ~~2147483649
-2147483647 // 値が変わっている

(new Date()).getTime() の値を文字列と相互変換している時に気付きました

> var dateStr = String((new Date()).getTime())
> dateStr
"1354079055775"
> ~~dateStr
1164357535

蛇足: parseInt と ~~ の違い

> parseInt('')
NaN
> parseInt(null)
NaN
> parseInt(undefined)
NaN
> ~~''
0
> ~~null
0
> ~~undefined
0

Readableかはさておき、parseInt より便利なんすよねー
NaN にするならエラーにして欲しいなぁ



コメントを残す

メールアドレスが公開されることはありません。

Categories

Archives