豚吐露@wiki

parseIntのおかしな挙動

最終更新:

ohden

- view
管理者のみ編集可

parseInt()は、入力された値によって挙動が変化する。

  • 先頭に『0』がついていると8進数。
  • 先頭に『0x』がついていると16進数。

そのため扱い方によっては、意図しない場面で8進数として扱われてしまう。
e.g.)
ゼロパディングされた文字列を、ゼロサプレスせずにparseIntに与えてしまう。

安全を考えると第二引数(option)に基数を指定してやるべきである。
parseInt(string parseTarget, [int radix])
e.g.)
parseInt("0123", 10);
⇒ 123
parseInt("0123", 8);
⇒ 83
parseInt("0123");
⇒ 83

~ブラウザ毎の挙動の差~
IE 8.0.6001.18702 本件内容のように動作
FireFox 3.5.5 本件内容のように動作
Safari 4.0.4 本件内容のように動作
Google Chrome 4.0.223.16 本件内容のように動作
Opera 10.10 先頭に『0』が付いていても10進数として扱う



更新日: 2014年09月11日 (木) 15時36分43秒

タグ:

ECMAScript
記事メニュー
ウィキ募集バナー