typeof Diary

VimとかJSとか。やったことのメモ。自分のため。

【IE8】parseIntのハマりどころ

ちょっとハマってしまった事柄があったので、備忘録的なノリで書いておきます。

parseInt()

文字列の引数をパースし、指定された基数の整数を返します。

var num1 = '07', num2 = '08';

console.log(parseInt(num1)); // a
console.log(parseInt(num2)); // b

この場合、aは7、bは8と出力されますね。

…。
いやまて、本当にそうなのか???

これはあくまでChromeとかでの話。

一方IE8では

ハマったのは、IE8での出来事。

同じコードを実行してみましょう。

var num1 = '07', num2 = '08';

console.log(parseInt(num1)); // a
console.log(parseInt(num2)); // b

この場合、aは7、bは0が返ってきます。

ちなみにparseInt('09')これも0です。
parseInt('10')は10です。

解決方法

ここで重要なのは、

指定された基数の整数を返します。

指定された基数

こいつが犯人です。

var num = '08';

console.log(parseInt(num, 10)); // 8

第2引数を付けましょう。基数は10だよ!って付けてあげましょう。
期待に応えてくれるでしょう。

こんなことで30分〜1時間ハマってたなんて言いたくない。
むしろ、Stack Overflowでささっと調べるべきでした。

これを読んだ方はお気をつけください。。。