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

-4 javascript parseint

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

Ant*_*ala 10

0oNNN 是文字八进制数的ECMAScript 2015语法.

0o2218十进制的.parseInt需要一个字符串,所以这个整数18被强制转换为十进制字符串'18'通过parseInt.并且由于8不是base-8中的有效数字,因此parseInt在第一个数字后退出并返回1.

从MDN文档中parseInt:

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


另请参阅:如何解决JavaScript的parseInt八进制行为?