使用parseInt方法解析字符串会返回无效输出。
代码:
parseInt("08");
例外输出:
8
实际输出:
0
代码[这会正确返回输出]:
parseInt("8")
输出:
8
为什么会这样?
答案 0 :(得分:2)
您需要指定基数:
parseInt("08",10); //=>8
否则JavaScript不知道您是十进制,十六进制还是二进制。 (如果您使用parseInt,这是您应该始终使用的最佳实践。)
答案 1 :(得分:2)
另见Number
:
Number("08"); // => 8
答案 2 :(得分:1)
你应该告诉parseInt基于10:
parseInt("08", 10);
JavaScript parseInt() Function
如果省略radix参数,则JavaScript假定以下内容:
如果字符串以“0x”开头,则基数为16(十六进制)
如果字符串以“0”开头,则基数为8(八进制)。这个功能是 deprecated如果字符串以任何其他值开头,则基数为10 (十进制)
答案 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