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

我只注意到:

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

既然都是基于V8,为什么同样的操作产生不同的结果?

当传递给parseInt的string有一个前导0时,就会发生未定义的行为,并且您离开radix参数。

表示上述string的基数的整数。 始终指定此参数以消除读者的困惑并保证可预测的行为。 未指定基数时,不同的实现会产生不同的结果。

有些浏览器默认基数为8,一些基于10。我不确定文档中关于Node的说法,但是显然它3010123 8为基数的,因为基数8中的790611是基数10中的790611

你会想要使用:

 parseInt("03010123", 10);