我有parseInt函数。parseInt在IE和Chrome中行为不同
为010作为输入:在IE
输出:在铬8 输出和Firefox:10
为099作为输入:在IE
输出:0 输出在铬和Firefox :99
有人可以帮我理解浏览器中的这种不同的行为.. 问题是在IE浏览器,它在Chrome和Firefox中按预期工作。
在此先感谢。
我有parseInt函数。parseInt在IE和Chrome中行为不同
为010作为输入:在IE
输出:在铬8 输出和Firefox:10
为099作为输入:在IE
输出:0 输出在铬和Firefox :99
有人可以帮我理解浏览器中的这种不同的行为.. 问题是在IE浏览器,它在Chrome和Firefox中按预期工作。
在此先感谢。
其实我会争论IE浏览器正在做的事 *这里。 parseInt
对于以0
开头的字符串,将被视为八进制输入。
要解决此问题,指定基(在这种情况下,你想十进制 - 10
):
num = parseInt(str, 10);
*在这种情况下, “正确” 的真正含义 “传统”。规范已经发生了变化。 Technically, a string starting with 0
can be treated as either octal OR decimal, depending on the implementor's whim, where decimal is now preferred:
如果基数是
undefined
或0(或不存在),JavaScript的假定:
- 如果输入
string
以 “0” 开始,基数是8(八进制)或10(十进制)。究竟选择哪个基数是依赖于实现的。 ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持此功能。由于这个原因,当使用parseInt时,总是指定一个基数。
谢谢,它的工作正常。 – user3373868
当你问这个问题时,没有任何建议会弹出来吗? http://stackoverflow.com/search?q=parseint+leading+0 – mplungjan