【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でささっと調べるべきでした。
これを読んだ方はお気をつけください。。。