为什么我在node.js中使用parseInt会得到奇怪的结果?(来自chrome js控制台的不同结果)

Ren*_*ama 12 javascript google-chrome parseint node.js

我刚注意到:

//IN CHROME JS CONSOLE
parseInt("03010123"); //prints: 3010123

//IN NODE.JS
parseInt("03010123"); //prints: 790611
Run Code Online (Sandbox Code Playgroud)

由于两者都基于V8,为什么同样的操作会产生不同的结果?

Ada*_*kis 24

传递给parseInt的字符串具有前导0,并且您不使用radix参数时,会发生未定义的行为.

一个整数,表示上述字符串的基数.始终指定此参数以消除读者混淆并保证可预测的行为.当未指定基数时,不同的实现会产生不同的结果.

一些浏览器默认为基数为8,有些浏览器默认为基数为10.我不确定文档对Node的说法,但显然它假设基数为8,因为3010123基数为8 790611的基数为10.

你会想要使用:

parseInt("03010123", 10);
Run Code Online (Sandbox Code Playgroud)

  • 节点6.6:`parseInt("03010123");` - > 3010123 (2认同)