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

Why am I getting weird result using parseInt in node.js? (different result from chrome js console)

本文关键字:结果 js 控制台 chrome node parseInt 为什么      更新时间:2023-09-26

我刚刚注意到:

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

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

当传递给parseInt的字符串有一个前导0,并且您省略了基数参数时,会发生未定义行为。

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

有些浏览器默认以8为基数,有些则以10为基数。我不确定文档对Node说了什么,但显然它假设以8为基数,因为以8为基数的3010123是以10为基数的790611

你需要使用:

parseInt("03010123", 10);