使用 parseInt 方法解析字符串会返回无效的输出。
代码 :
parseInt("08");
例外输出:
8
实际输出:
0
代码[正确返回输出]:
parseInt("8")
输出 :
8
为什么会发生?
使用 parseInt 方法解析字符串会返回无效的输出。
代码 :
parseInt("08");
例外输出:
8
实际输出:
0
代码[正确返回输出]:
parseInt("8")
输出 :
8
为什么会发生?
您需要指定基数:
parseInt("08",10); //=>8
否则 JavaScript 不知道你是十进制、十六进制还是二进制。(如果您使用 parseInt,这是您应该始终使用的最佳实践。)
另见Number
:
Number("08"); // => 8
你应该告诉 parseInt 它基于 10:
parseInt("08", 10);
如果 radix 参数被省略,JavaScript 假设如下:
如果字符串以“0x”开头,则基数为 16(十六进制)
如果字符串以“0”开头,则基数为 8(八进制)。不推荐使用此功能如果字符串以任何其他值开头,则基数为 10(十进制)
带有前导零的字符串通常被解释为八进制值。由于八进制表示只有 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