parseInt在IE和chrome中表现不同

时间:2014-03-03 07:12:06

标签: javascript internet-explorer google-chrome

我有parseInt功能。

输入010作为输入:

在IE中输出

:8 chrome和firefox中的输出:10

输入099作为输入:

IE中的

输出:0 chrome和firefox中的输出:99

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

提前致谢。

1 个答案:

答案 0 :(得分:4)

实际上我认为IE在这里正确地做事 * 。对于以parseInt开头的字符串,0被视为 octal 输入。

要解决此问题,请指定基数(在这种情况下,您需要小数 - 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”开头,则基数为八(八进制)或十进制(十进制)。究竟选择哪个基数是依赖于实现的。 ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持此功能。因此,在使用parseInt 时始终指定基数。
  •