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

IT技术 javascript node.js google-chrome parseint
2021-01-20 16:25:06

我刚刚注意到:

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

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

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

1个回答

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

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

有些浏览器默认为 base 8,有些浏览器默认为 base 10。我不确定文档对 Node 的看法,但显然它假设 base 8,因为3010123base 8 是790611base 10。

你会想要使用:

parseInt("03010123", 10);
您也可以使用 Number() 作为替代。
2021-03-28 16:25:06
而已!谢谢。您可能希望通过添加此链接作为参考来改进您的答案:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
2021-03-30 16:25:06
节点 6.6:parseInt("03010123");-> 3010123
2021-04-03 16:25:06