非常困惑。
parseInt(“09”)= 0
但
parseInt(“9”)= 9
为什么前缀零不仅仅被剥离了?
警报(parseInt函数( “01”)); = 1
..愤怒退出
答案 0 :(得分:19)
因为默认情况下将其视为八进制格式。如果你想获得9,你必须添加你想要的数字基数,那就是10,而不是8(对于八进制),所以请致电:
parseInt("09", 10);
答案 1 :(得分:6)
<强> A.7。 parseInt函数强>
parseInt 是一个将字符串转换为整数的函数。当它看到一个非数字时停止,所以
parseInt("16")
和parseInt("16 tons")
会产生相同的结果。如果这样的话会很好
函数以某种方式向我们通知了额外的文本,但它没有。
如果字符串的第一个字符是0,则字符串在base 8而不是base 10中求值。在base 8,8和
9不是数字,因此parseInt("08")
和parseInt("09")
会产生0作为结果。这个错误导致
解析日期和时间的程序中的问题。幸运的是, parseInt 可以采用基数参数,这样
parseInt("08", 10)
生成8.我建议您始终提供基数参数。
“JavaScript:Douglas Crockford撰写的好文章。版权所有2008 Yahoo! Inc., 978-0-596-51774-8“。
答案 2 :(得分:6)
原因如下:
If the string begins with "0x", the radix is 16 (hexadecimal)
If the string begins with "0", the radix is 8 (octal). This feature is deprecated
If the string begins with any other value, the radix is 10 (decimal)
答案 3 :(得分:5)
待办事项
parseInt("09", 10)
指定基数10.
编辑:为了澄清,前缀为零的数字将被假定为八进制表示法,而“09”不是有效的八进制数。