当我传递一个前导零的字符串时,为什么parseInt()会返回意外的结果?

时间:2011-12-09 11:41:37

标签: javascript

parseInt('1') = 1
parseInt('01') = 1
parseInt('5') = 5
parseInt('05') = 5
parseInt('8') = 8

但为什么:
parseInt('08') = 0
parseInt('09') = 0

5 个答案:

答案 0 :(得分:11)

始终使用将基数作为第二个参数的重载:

parseInt('011',10) = 11

答案 1 :(得分:9)

这是一个提示:

parseInt('011') = 9

如果从0开始,则将其解析为八进制数。

答案 2 :(得分:8)

0开头的数字(不是0x)是八进制数字。因此89不是有效的八进制数。

答案 3 :(得分:1)

在JavaScript中将字符串转换为十进制数时,您可以使用加号运算符代替parseInt或parseFloat,如下例所示:

x = +(“12”); //从字符串“12”

转换后,为x分配了一个数字12

x = +(“1”+“2”); //从字符串“12”

转换后,为x分配了一个数字12

答案 4 :(得分:0)

其他人已经回答了原因。

要删除,您可以使用parseFloat()或parseInt(value,base) Fiddle