在解析Int时,似乎应该忽略前导零。这背后的理由是什么?
答案 0 :(得分:16)
它被解析为八进制号码,您还需要指定 base :
parseInt("014", 10) // 14
<强>引用强>
如果输入字符串以“0x”或“0X”开头,则radix为16 (十六进制)。
如果输入字符串以“0”开头,则基数为8(八进制)。这个 功能是非标准的,有些实现故意不这样做 支持它(而不是使用基数10)。因此总是如此 使用parseInt时指定基数。
如果输入字符串以任何其他值开头,则基数为10 (十进制)。
答案 1 :(得分:11)
因为它被解析为八进制数,而不是十进制数。 来自MDC:
要强制它解析为Decimal,只需提供10作为第二个参数(base)。
var i = parseInt(012,10);
答案 2 :(得分:1)
前导零使数字为八进制
答案 3 :(得分:1)
这是一个八进制数
8 + 4 == 12