Javascript parseInt方法中的错误?

时间:2012-06-26 07:56:55

标签: javascript html css

  

可能重复:
  Workarounds for JavaScript parseInt octal bug

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

代码:

parseInt("08");

例外输出:

8

实际输出:

0

代码[这会正确返回输出]:

parseInt("8")

输出:

8

为什么会这样?

4 个答案:

答案 0 :(得分:2)

您需要指定基数:

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

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

答案 1 :(得分:2)

答案 2 :(得分:1)

你应该告诉parseInt基于10:

parseInt("08", 10);

JavaScript parseInt() Function

  

如果省略radix参数,则JavaScript假定以下内容:

     

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

     

如果字符串以“0”开头,则基数为8(八进制)。这个功能是   deprecated如果字符串以任何其他值开头,则基数为10   (十进制)

http://jsfiddle.net/YChK5/

答案 3 :(得分: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