2009年10月2日金曜日

[JavaScript] parseInt() はおせっかい?

JavaScript で文字列を数値として扱う parseInt() があります。

当然のことながら、
var num = parseInt('01');
と書くと num には 1 が入ってくれます。

ただ、
var num = parseInt('08');
と書くと num には 8 が入ってくれ・・・ません。

どうやら渡された文字列が 0 から始まっているので
8進数と自動判定されてしまったのが原因のようです。
※にしても '08' だと 0 が返る謎。

解決策としては、parseInt() の第二引数に基数をちゃんと渡してあげること。
var num = parseInt('08', 10); // 10進数
これで無事 8 が返ってきました。

日付や時間の文字列を数値として扱うときは、
8時や8日、8月以降にバグが出るというようなことに成りかねないので
注意したほうがいいですね。。。

0 件のコメント: