1

可能重复:
JavaScript parseInt 八进制错误的解决方法

使用 parseInt 方法解析字符串会返回无效的输出。

代码 :

parseInt("08");

例外输出:

8

实际输出:

0

代码[正确返回输出]:

parseInt("8")

输出 :

8

为什么会发生?

4

4 回答 4

3

您需要指定基数:

parseInt("08",10); //=>8

否则 JavaScript 不知道你是十进制、十六进制还是二进制。(如果您使用 parseInt,这是您应该始终使用的最佳实践。)

于 2012-06-26T07:59:09.483 回答
2

另见Number

Number("08"); // => 8
于 2012-06-26T08:01:50.350 回答
1

你应该告诉 parseInt 它基于 10:

parseInt("08", 10);

JavaScript parseInt() 函数

如果 radix 参数被省略,JavaScript 假设如下:

如果字符串以“0x”开头,则基数为 16(十六进制)

如果字符串以“0”开头,则基数为 8(八进制)。不推荐使用此功能如果字符串以任何其他值开头,则基数为 10(十进制)

http://jsfiddle.net/YChK5/

于 2012-06-26T07:59:23.693 回答
0

带有前导零的字符串通常被解释为八进制值。由于八进制表示只有 0-7 的数字才有意义,因此“08”将转换为“0”。指定解决此问题的基础:

parseInt("08", 10); // base 10

像往常一样,MDN 是一个很好的信息来源: https ://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt#Octal_Interpretations_with_No_Radix

于 2012-06-26T08:01:52.463 回答