ここでは、Javascript で文字列を数値に変換する parseInt 関数および Number 関数のサンプルスクリプトを掲載しています。特に parseInt 関数には注意が必要です。
スポンサーリンク
文字列を数値に変換する parseInt 関数と Number 関数
parseInt 関数と Number 関数は次のように使用します。
var str = "123"; alert(parseInt(str)); // 123 alert(Number(str)); // 123
parseInt 関数の挙動
parseInt 関数は文字列が 0x で始る場合は 16進数として、0 で始る場合には 8進数として扱うために注意が必要です。
parseInt 関数の挙動
- 第1引数のstringが「0x」または「0X」で始まるときは、第2引数のradixは16(16進法)としてその後の文字列を解析します。
- 第1引数のstringが「0」で始まるときは、第2引数のradixは8(8進法)または10(10進法)とされます。厳密には、基数がどちらになるかは実装によります。ECMAScript 5 の仕様では10(10進法)です。ただし、まだすべてのブラウザがサポートしている訳ではありません。したがって、parseInt()関数を使うとき基数は必ず与えてください。
- 第1引数のstringがその他の値で始まるときは、第2引数のradixは10(10進法)とされます。
従って、上記サンプルのように parseInt 関数の第2パラメータを省略することは NG です。
// NG var str = "08"; alert(parseInt(str)); // 0 alert(Number(str)); // 8 // OK var str = "08"; alert(parseInt(str, 10)); // 8 alert(Number(str)); // 8
ありがちなバグ
HTML の select タグで(01 ~ 12)のように月を選択した文字列を使い、 parseInt 関数の第2パラメータを省略して数値に変換すると、期待しない動作となるのは 08 および 09 だけですので、テストをすり抜ける可能性があります。
このようなことからも parseInt 関数を使用する場合には、第2パラメータを省略することなく必ず指定する必要があります。