JavaScript おれおれ Advent Calendar 2011 – 6日目

ビット演算のOR|で一発です。

var source = -12.3;  // 実数
var result = source | 0;  // => -12
var source = "010";  // 文字列
var result = source | 0;  // => 10

これだけで実数→整数も文字列→整数も行けますし、文字列が"12a"でも"xxx"でもNaNにもなりません。

ビット演算はOR|の他にAND&とXOR^、単項のNOT~がありますが、JavaScriptではいずれも辺々を数値化し整数化してから、演算を実行します。

また0はビットが全てゼロですから、それとのORを取っても元の数値と同じ数値が返ってきます。こうして、結果的に整数化する事ができました。

ぱっと見は分かりづらいので、コメントを書くとか、まあ工夫してください。