豚吐露@wiki
parseIntのおかしな挙動
最終更新:
ohden
-
view
parseInt()は、入力された値によって挙動が変化する。
- 先頭に『0』がついていると8進数。
- 先頭に『0x』がついていると16進数。
そのため扱い方によっては、意図しない場面で8進数として扱われてしまう。
e.g.)
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秒









