2014-03-03 41 views
1

我有parseInt函数。parseInt在IE和Chrome中行为不同

为010作为输入:在IE

输出:在铬8 输出和Firefox:10

为099作为输入:在IE

输出:0 输出在铬和Firefox :99

有人可以帮我理解浏览器中的这种不同的行为.. 问题是在IE浏览器,它在Chrome和Firefox中按预期工作。

在此先感谢。

+0

当你问这个问题时,没有任何建议会弹出来吗? http://stackoverflow.com/search?q=parseint+leading+0 – mplungjan

回答

3

其实我会争论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时,总是指定一个基数。
+0

谢谢,它的工作正常。 – user3373868

相关问题