javascript parseInt函数评估' 010'在我尝试的所有浏览器中都是十进制10而不是八进制8 - 相对较新版本的Chrome,Firefox和IE - 这是你所期望的,因为它已被弃用了很长时间。 / p>
但是我有一些代码没有指定基数,我想知道运行旧版浏览器的人是否会发现错误。有人编译了哪些浏览器/版本将解析八进制的列表?这有多常见?
答案 0 :(得分:4)
当基数为0或未定义时,字符串的数字以a开头 0 数字后面没有 x 或 X ,然后实施可以自行决定将数字解释为八进制或 作为小数。鼓励实现解释数字 在这种情况下为十进制。
如果 radix 未定义或0,则假定为10,除非 数字以字符对 0x 或 0X 开头,其中 假设基数为16。
因此,所有符合ES5的实现都将解析为十进制而不是八进制。
答案 1 :(得分:3)
ECMAScript 5禁止将此类(未指定的基数)字符串解析为八进制。这意味着IE9及更高版本不会出现问题(大多数其他浏览器也不会出现问题 - 如here所示)
在这种情况下,我担心IE8,因为它可能仍然转换为八进制,给定前导零和无基数。 (仅在ECMAScript 3中不鼓励,不禁止此转换 - 请参阅MDN explanation。)