豚吐露@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秒