为什么“console.log(parseInt(0o22,8))”显示“1”

问题描述:

为什么console.log(parseInt(0o22,8))输出1为什么“console.log(parseInt(0o22,8))”显示“1”

+0

你不必重复你的问题三次:) –

0oNNN是用于字面八进制数字的ECMAScript 2015语法。

0o2218十进制。 parseInt需要一个字符串,因此该整数18被强制为十进制字符串'18'parseInt。并且由于8不在碱-8,parseInt捞出第一个数字之后的有效数位,并返回1.

从MDN文档parseInt

如果parseInt遇到一个字符不是数字在指定的基数中,它会忽略它和所有后续字符,并返回解析到该点的整数值。 parseInt将数字截断为整数值。前后空格是允许的。


参见:How do I work around JavaScript's parseInt octal behavior?