1 javascript internet-explorer google-chrome
我有parseInt函数。
对于010作为输入:
IE中的输出:8 Chrome和Firefox中的输出:10
对于099作为输入:
IE中的输出:0 chrome和Firefox中的输出:99
有人可以帮我理解浏览器中的这种不同行为..问题在IE中,并且在chrome和firefox中按预期工作。
提前致谢。
其实我认为IE是正确的做事情*这里。parseInt以a开头的字符串0被视为八进制输入。
要解决此问题,请指定基数(在这种情况下,您需要十进制- 10):
num = parseInt(str, 10);
Run Code Online (Sandbox Code Playgroud)
*在这种情况下,“正确”实际上是“传统上”的意思。规范实际上已更改。
从技术上讲,从一个字符串0可以被视为或者八进制或十进制,这取决于实施者的随心所欲,其中小数现在优选的:
如果radix为
undefined或0(或不存在),则JavaScript假定以下内容:
- 如果输入
string以“ 0”开头,则基数为8(八进制)或10(十进制)。选择哪个基数取决于实现。ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持。因此,在使用parseInt时始终指定一个基数。
| 归档时间: |
|
| 查看次数: |
545 次 |
| 最近记录: |