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

时间:2017-07-17 09:58:37

标签: javascript parseint

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

1 个答案:

答案 0 :(得分:10)

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

0o22的小数为18parseInt需要字符串,因此18将此整数'18'强制转换为parseInt的十进制字符串8。由于parseInt不是base-8中的有效数字,parseInt在第一个数字后退出并返回1.

来自parseInt的MDN文档:

  

如果parseInt遇到的字符不是指定基数中的数字,它会忽略它和所有后续字符,并返回解析到该点的整数值。 pg_dump --host localhost --port 5432 --username postgres --dbname test-new >D:\test5.sql psql --host localhost --port 5432 --username postgres --dbname test-qa < file.sql 将数字截断为整数值。允许前导和尾随空格。

另请参阅:How do I work around JavaScript's parseInt octal behavior?