Почему я получаю странный результат, используя parseInt в node.js? (другой результат от консоли хром js)

Я только заметил, что:

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

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

Так как оба основаны на V8, почему одна и та же операция дает разные результаты???

Ответ 1

Undefined поведение происходит, когда строка, передаваемая parseInt, имеет ведущее 0, и вы не учитываете параметр radix.

Целое число, которое представляет собой радиус вышеупомянутой строки. Всегда указывайте этот параметр, чтобы устранить недоразумение читателя и гарантировать предсказуемое поведение. Различные реализации приводят к различным результатам, когда рексикс не указан.

Некоторые браузеры по умолчанию имеют значение 8, а некоторые - к базе 10. Я не уверен, что говорят docs о Node, но ясно, что он предполагает базу 8, так как 3010123 в базе 8 есть 790611 в базе 10.

Вы хотите использовать:

parseInt("03010123", 10);