typeof Diary

VimとかJSとか。

【IE8】parseIntのハマりどころ

寒いですね。
朝は室温が20度と、半袖では少し寒い気温です。

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

parseInt()

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

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

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

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

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

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

一方ブラウザ界のアイドルでは

ハマったのは、XPがサポート切れになったことにより、
ブラウザ(?)界のアイドルの座を獲得したであろうあのお方です。

その名も、\Internet Explorer8/

こいつですよ。こいつ。

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

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だよ!って付けてあげましょう。
IE8という名のアイドルは期待に応えてくれるでしょう。

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

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