[JavaScript] 8をparseIntすると0になる問題の対処法

1 min read

8 が 0 になってしまう問題が発生した際に嵌まったのでメモ

var hoge = "08";
var piyo = parseInt(hoge);
// => 0

こんな風に単純に数値型にしてくれるだけではなく、

parseInt("10")         -->  10
parseInt("2008year")   -->  2008
parseInt("-77point")   -->  -77

こんな風に適当な基数に変換してくれます。

parseInt("0x37")       -->  55
parseInt("37")         -->  37

問題はここで、
先頭に 0 のあるhogeは 8 進数と判断されて 0 に変換されしまったのです。

parseInt は基数を指定できます。(指定できる値は「2」「8」「10」「16」)
ですので、きちんと 10 進数を指定してやれば

var piyo = parseInt(hoge, 10);

0 には変換されずに期待通りの値が取得できるはずです。

要はちゃんと基数を指定しろって事ですね。