[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関数 - グローバル関数 - JavaScript入門』より
こんな風に適当な基数に変換してくれます。
parseInt("0x37") --> 55
parseInt("37") --> 37
問題はここで、
先頭に 0 のあるhoge
は 8 進数と判断されて 0 に変換されしまったのです。
parseInt は基数を指定できます。(指定できる値は「2」「8」「10」「16」)
ですので、きちんと 10 進数を指定してやれば
var piyo = parseInt(hoge, 10);
0 には変換されずに期待通りの値が取得できるはずです。
要はちゃんと基数を指定しろって事ですね。