JavaScriptのparseIntは第2引数にちゃんと進数を指定する
parseIntに0(ゼロ)から始まる値を入れると8進数として処理される
JavaScript をよく使う人は必ずといっていいほど出会うと思われるトラップじゃないでしょうか。日付関係の処理のとき、桁あわせで01月とか07日とか使うことって結構あると思うのですが、それらを整数として処理するために parseInt に入れる時に、よくはまる罠です。
//第2引数の進数指定なし parseInt("01"); // 1 parseInt("07"); // 7 parseInt("08"); // 0 parseInt("10"); // 10 //第2引数に10進数を指定 parseInt("01", 10); // 1 parseInt("07", 10); // 7 parseInt("08", 10); // 8 parseInt("10", 10); // 10
値の先頭に0(ゼロ)が付くと8進数として処理するため、1から7までは結局同じで、8のときに初めて0が出力されて気づくことが多い。ちなみに0xで始めると16進数。
というわけで、整数変換のときは第2引数に10をお忘れなく。なんせシステムを組んだのが8月か9月だと気づきやすいけど、10月にでも組もうものなら11ヵ月後に発覚するという恐ろしい時限式バグですね。気をつけましょう。
ちなみに eval() 使ってもNumber型に変換してくれるっぽいです。
eval("01"); // 1 eval("07"); // 7 eval("08"); // 8 eval("10"); // 10
Leave a comment
※ 本サイトのコメントは承認制です。
※ コメント送信後すぐには表示されない可能性がありますのでご注意ください。
twitter : @krengt
[PR]
カテゴリー
タグ
Apache
Apple
ASUSTek
CakePHP
comment
debian
echoback Design.
Flash
gitlab
HDD
HeidiSQL
iPhone
iTunes
jQuery
laravel
MAC
MacBookAir
MySQL
NINI TOUNUMA
RSS
rvm
SCLL
Spangle call Lilli line
squeeze
Thunderbird
TIPS
wheezy
Windows
ことわざ
さくらVPS
ウェブサイト
ウェブサービス
サーバ移行
セキュリティ
チョコレート
フォーマット
プラグイン
マウス
リメイク
レスポンシブデザイン
備忘録
本
緊急事態
解決策