«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу избежать проблем с восьмеричной интерпретацией parseInt в JavaScript?

Как я могу избежать проблем с восьмеричной интерпретацией parseInt в JavaScript?

Опубликовано 22 декабря 2024 г.
Просматривать:641

How Can I Avoid parseInt's Octal Interpretation Issues in JavaScript?

Восьмеричная опасность JavaScript: обходные пути для неправильного поведения parseInt

Функция parseInt JavaScript может спотыкаться при обнаружении чисел с ведущими нулями. Проблема связана с тенденцией интерпретировать ведущие нули как восьмеричные цифры, что приводит к ошибочным результатам.

Пример:

parseInt('01'); // 1
parseInt('08'); // 0 (invalid octal digit)

Обходные пути:

  • Укажите базу (систему счисления)

Самое простое решение — явно указать основание числа или систему счисления. Это можно сделать, используя второй параметр parseInt:

parseInt('08', 10); // 8 (specifying base 10)
  • Использовать конструктор чисел

Альтернативно конструктор чисел можно использовать для анализа чисел, в том числе с ведущие нули:

Number('08'); // 8
  • Преобразовать в строку с основанием 10

Другой подход – преобразовать строку в десятичную систему перед ее анализом:

parseInt(parseInt('08', 8).toString(), 10); // 8 (convert octal to base 10)
  • Используйте регулярное выражение

Регулярные выражения можно использовать для удаления ведущих нулей:

parseInt(/^0 (.*)$/gm('008')); // 8 (match and capture non-zero digits)

Примечание:

В 5-м издании JavaScript (ECMA-262) поведение parseInt изменилось, устраняя проблема восьмеричной интерпретации. Однако для совместимости со старыми версиями JavaScript рекомендуется использовать один из упомянутых выше обходных путей при обнаружении чисел с ведущими нулями.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3