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

时间:2013-06-02 06:20:57

标签: javascript node.js google-chrome parseint

我刚注意到:

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

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

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

1 个答案:

答案 0 :(得分:24)

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

  

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

有些浏览器默认为基数为8,有些浏览器默认为基数为10.我不确定文档对Node的评价,但很明显它假定基数为8,因为基数为8的3010123790611在基地10。

你想要使用:

parseInt("03010123", 10);