parseInt()和octal - 哪些浏览器支持它?

时间:2015-03-04 19:43:28

标签: javascript

javascript parseInt函数评估' 010'在我尝试的所有浏览器中都是十进制10而不是八进制8 - 相对较新版本的Chrome,Firefox和IE - 这是你所期望的,因为它已被弃用了很长时间。 / p>

但是我有一些代码没有指定基数,我想知道运行旧版浏览器的人是否会发现错误。有人编译了哪些浏览器/版本将解析八进制的列表?这有多常见?

2 个答案:

答案 0 :(得分:4)

ECMAScript 3

  

当基数为0或未定义时,字符串的数字以a开头    0 数字后面没有 x X ,然后实施可以自行决定将数字解释为八进制或   作为小数。鼓励实现解释数字   在这种情况下为十进制。

ECMAScript 5

  

如果 radix 未定义或0,则假定为10,除非   数字以字符对 0x 0X 开头,其中   假设基数为16。

因此,所有符合ES5的实现都将解析为十进制而不是八进制。

答案 1 :(得分:3)

ECMAScript 5禁止将此类(未指定的基数)字符串解析为八进制。这意味着IE9及更高版本不会出现问题(大多数其他浏览器也不会出现问题 - 如here所示)

在这种情况下,我担心IE8,因为它可能仍然转换为八进制,给定前导零和无基数。 (仅在ECMAScript 3中不鼓励,不禁止此转换 - 请参阅MDN explanation。)