
Функция parseInt() в JavaScript преобразует строку в целое число. Она принимает два аргумента: строку и основание системы счисления (radix). Без указания основания функция может вернуть неожиданный результат, особенно при обработке строк, начинающихся с «0» или «0x».
Синтаксис: parseInt(string, radix). Первый аргумент обязательно приводится к строке, второй указывает, в каком формате читать число: десятичном (10), шестнадцатеричном (16), двоичном (2) и т. д. Например, parseInt("1010", 2) вернёт 10.
Если указать radix как 10, поведение становится предсказуемым. parseInt("08") вернёт 8, а не 0, как это было бы без явного основания в старых реализациях JavaScript.
Функция читает строку слева направо до первого недопустимого символа. parseInt("123abc") даст 123, а parseInt("abc123") – NaN. Это поведение отличается от Number(), которая требует, чтобы вся строка была числом.
parseInt полезна для обработки пользовательского ввода, чисел из текстовых атрибутов, URL-параметров. Однако она не подходит для точного преобразования чисел с плавающей точкой – parseFloat() справляется с этим корректнее.
Рекомендуется всегда указывать radix, чтобы избежать неоднозначностей: parseInt("10", 10) – предпочтительнее, чем parseInt("10").
Как работает parseInt: пошаговый разбор преобразования строки в число

Функция parseInt анализирует строку слева направо, пока не встретит символ, который не может быть интерпретирован как цифра в указанной системе счисления. После этого анализ останавливается, и возвращается полученное число. Если первый символ не может быть распознан, результатом будет NaN.
Алгоритм работы parseInt можно разбить на следующие этапы:
- Игнорирование начальных пробелов.
- Распознавание необязательного знака
+или-. - Определение системы счисления: если указан второй аргумент, он используется как основание. Если нет – строка может начинаться с
"0x"(шестнадцатеричная) или"0"(в старых версиях – восьмеричная, сейчас – десятичная). - Чтение символов, соответствующих основанию.
- Преобразование последовательности в число.
Примеры с пояснениями:
parseInt("42") // 42, десятичная система по умолчанию
parseInt(" -10") // -10, пробелы игнорируются
parseInt("0xF") // 15, шестнадцатеричная запись
parseInt("15px") // 15, строка обрывается на недопустимом символе
parseInt("px15") // NaN, первый символ недопустим
parseInt("010") // 10, интерпретируется как десятичное число
parseInt("010", 8) // 8, явное указание восьмеричной системы
parseInt("11", 2) // 3, бинарная система
Рекомендации:
- Всегда указывайте второй аргумент – систему счисления. Это исключает неоднозначность и делает поведение стабильным.
- Не используйте
parseIntдля преобразования десятичных дробей. Например,parseInt("12.34")вернёт12, игнорируя часть после точки. - Если нужно строгое преобразование всей строки, используйте
NumberилиparseFloat.
Что такое основание системы счисления в parseInt и как его указывать
Функция parseInt принимает второй аргумент – основание системы счисления (radix). Оно определяет, в какой системе счисления нужно интерпретировать переданную строку.
Если аргумент radix не указан, поведение зависит от содержимого строки:
- Если строка начинается с «0x» или «0X», используется шестнадцатеричная система (radix = 16).
- Если строка начинается с «0», в некоторых старых реализациях мог использоваться radix = 8, но стандарт требует трактовать её как десятичную.
- Если строка начинается с любой другой цифры, используется десятичная система (radix = 10).
Чтобы избежать неоднозначности, всегда указывайте второй аргумент явно. Это предотвращает ошибки и делает поведение кода предсказуемым.
Примеры:
parseInt("1010", 2)вернёт10– двоичная система.parseInt("1A", 16)вернёт26– шестнадцатеричная система.parseInt("08", 10)вернёт8– десятичная система.
Допустимые значения radix – от 2 до 36. Значения ниже 2 или выше 36 игнорируются, и функция возвращает NaN.
Перед вызовом parseInt убедитесь, что строка не содержит пробелов в начале, если они нежелательны: функция пропускает начальные пробелы, что может повлиять на результат.
Чем отличается parseInt от Number и почему это важно

parseInt разбирает строку посимвольно и возвращает целое число, игнорируя всё, что идёт после первого нецифрового символа. Пример: parseInt('42px') вернёт 42, а Number('42px') – NaN.
Number пытается преобразовать всю строку целиком. Если строка не может быть полностью интерпретирована как число, результатом будет NaN. Это делает Number более строгим.
При вызове parseInt важно указывать основание системы счисления вторым аргументом: parseInt('010', 10). Без него результат может зависеть от содержимого строки. Например, parseInt('010') в старых средах возвращал 8, считая строку восьмеричным числом.
Number подходит для точного преобразования, например, при работе с пользовательским вводом чисел с плавающей точкой: Number('3.14') вернёт 3.14, а parseInt('3.14') – 3, отбрасывая дробную часть.
Используйте parseInt только тогда, когда нужно получить целую часть числа из строки, и обязательно указывайте основание. Для надёжного преобразования в число в большинстве случаев предпочтительнее Number.
Как parseInt обрабатывает пробелы, символы и неправильный ввод

Функция parseInt анализирует строку слева направо и завершает чтение при первом неподходящем символе. Поведение зависит от структуры строки и содержания символов.
- Начальные пробелы игнорируются. Например,
parseInt(" 42")вернёт42. - Первый знак
+или-учитывается:parseInt("-7")даст-7. - Цифры читаются до первого символа, который не может быть частью числа в выбранной системе счисления. Пример:
parseInt("123abc")вернёт123. - Если строка начинается с неподходящего символа (например, буква), результатом будет
NaN:parseInt("abc123"). - Символы после допустимой части игнорируются.
parseInt("10px")– результат10.
Если указано основание системы счисления (второй аргумент), учитываются только допустимые символы этой системы:
parseInt("20", 8)–2, потому что0–7– допустимые цифры в восьмеричной системе.parseInt("1f", 16)–31, так какfдопустима в шестнадцатеричной системе.parseInt("1g", 16)–1, потому чтоgнедопустима в этой системе.
Для проверки, был ли результат числом, следует использовать isNaN. Например, isNaN(parseInt("abc")) вернёт true.
Почему parseInt может вернуть NaN и как этого избежать

Функция parseInt возвращает NaN, если не может преобразовать переданную строку в целое число. Это происходит, когда строка не начинается с цифры или допустимого знака числа. Например, parseInt("abc123") вернёт NaN, так как первый символ – нецифра.
Другой источник ошибки – использование parseInt без указания основания системы счисления. Например, parseInt("08") может вернуть 8 или NaN в зависимости от среды выполнения, так как интерпретатор может считать строку восьмеричным числом, где цифра 8 недопустима. Явное указание основания решает проблему: parseInt("08", 10) гарантированно вернёт 8.
Перед использованием parseInt стоит убедиться, что входные данные – строка, содержащая ожидаемый числовой формат. Валидация через регулярные выражения позволяет исключить неподходящие значения до попытки преобразования. Пример: /^-?\d+$/ проверяет, содержит ли строка только цифры и, при необходимости, минус в начале.
Также важно избегать передачи значений типа null, undefined, boolean или объектов. Например, parseInt(true) вернёт NaN, так как true приводится к строке "true", не начинающейся с цифры.
Для контроля результата преобразования проверяйте его через Number.isNaN(), а не через == NaN, так как NaN === NaN всегда false. Пример: Number.isNaN(parseInt(value)).
Использование parseInt при обработке пользовательского ввода

При получении данных из текстовых полей формы значения поступают в виде строк. Если ожидается целое число, необходимо преобразовать его с помощью parseInt. Это позволяет избежать ошибок при математических операциях и проверках.
Функция parseInt принимает два аргумента: строку и систему счисления (радикс). Например, parseInt("42", 10) вернёт число 42. Указание второго аргумента обязательно, если требуется избежать ошибочного распознавания числа, особенно при вводе с ведущими нулями, которые могут быть интерпретированы как восьмеричные или шестнадцатеричные.
Перед применением parseInt рекомендуется очищать ввод: удалять пробелы методом trim(), проверять, что значение непустое и не содержит недопустимых символов. Например:
const input = document.getElementById("age").value.trim();
if (/^\d+$/.test(input)) {
const age = parseInt(input, 10);
// дальнейшая обработка
}
Проверка через регулярное выражение /^\d+$/ позволяет убедиться, что строка содержит только цифры, исключая ошибки при преобразовании. Если в строке присутствуют символы, parseInt остановится на первом недопустимом символе и вернёт число до него. Например, parseInt("123abc", 10) вернёт 123, а parseInt("abc123", 10) вернёт NaN.
Чтобы избежать получения NaN, после преобразования следует использовать Number.isNaN() для проверки результата:
const value = parseInt(input, 10);
if (!Number.isNaN(value)) {
// корректное число
}
При работе с формами ввод часто происходит с задержками. Обработка может выполняться на событии blur или после отправки формы, а не на каждый input, чтобы не перегружать интерфейс лишними проверками.
Как использовать parseInt внутри функций обратного вызова, например в map

Функция parseInt принимает два аргумента: строку и основание системы счисления. При использовании внутри map важно не допустить ошибку, связанную с передачей второго параметра.
Вызов ['10', '11', '12'].map(parseInt) возвращает [10, NaN, 1], потому что map передаёт в parseInt три аргумента: значение, индекс и сам массив. parseInt интерпретирует второй аргумент как основание системы счисления. В данном случае: parseInt('10', 0) – результат 10, parseInt('11', 1) – NaN, parseInt('12', 2) – 1.
Чтобы избежать некорректной интерпретации, следует использовать явную обёртку: ['10', '11', '12'].map(str => parseInt(str, 10)). Это гарантирует десятичное основание и корректный результат: [10, 11, 12].
Альтернативный способ – использовать Number, если нет необходимости задавать основание: ['10', '11', '12'].map(Number) также возвращает [10, 11, 12], но не интерпретирует строки с префиксом 0x как шестнадцатеричные.
Всегда проверяйте сигнатуру функции обратного вызова, особенно при использовании функций, принимающих несколько аргументов. Это снижает риск логических ошибок при преобразовании данных.
Распространённые ошибки при использовании parseInt и способы их предотвратить
Ошибка: Отсутствие указания основания системы счисления
Если не указать второй аргумент parseInt, JavaScript может интерпретировать строку в разных системах счисления. Например, parseInt('08') вернёт 8 в современных реализациях, но в старых – 0, потому что '08' интерпретировалось как восьмеричное число. Чтобы избежать двусмысленности, всегда указывайте основание, например: parseInt('08', 10).
Ошибка: Преобразование нечислового начала строки
parseInt обрабатывает строку до первого недопустимого символа. Вызов parseInt('123abc') вернёт 123, но parseInt('abc123') – NaN. Проверяйте, что строка начинается с цифры, если ожидается целое число.
Ошибка: Использование с числами с плавающей точкой
parseInt не округляет, а отбрасывает дробную часть. parseInt('10.8') вернёт 10, а не 11. Если нужно округление, используйте Math.round(), Math.floor() или Math.ceil().
Ошибка: Передача числа вместо строки
Если передать числовой аргумент, например parseInt(10.5), он сначала преобразуется в строку '10.5', затем результат будет 10. Это неочевидное поведение может приводить к ошибкам. Лучше использовать Math.trunc() для чисел, если нужно отбросить дробную часть.
Ошибка: Использование в циклах и обратимых операциях
Неправильное преобразование строки к числу через parseInt может нарушить логику итераций. Например, parseInt('11', 2) вернёт 3, а parseInt('11') – 11. Всегда уточняйте систему счисления, особенно при обработке бинарных, восьмеричных или шестнадцатеричных значений.
Вопрос-ответ:
Что такое функция parseInt в JavaScript?
Функция parseInt используется для преобразования строкового значения в целое число. Она принимает два параметра: строку, которую нужно преобразовать, и необязательное основание системы счисления (по умолчанию — десятичная система). Если в строке есть символы, которые не могут быть интерпретированы как цифры, parseInt прекращает обработку на первом таком символе.
Как работает parseInt с разными типами данных?
Функция parseInt может работать с различными типами данных. Если передан не строковый тип, JavaScript сначала преобразует его в строку. Например, parseInt(123.45) вернет 123, так как функция извлекает только целую часть числа. Однако при передаче значения NaN или null функция вернет NaN (не число), так как эти значения невозможно преобразовать в целое число.
Какие особенности у parseInt при использовании с числами в разных системах счисления?
Когда функция parseInt используется с двумя параметрами, она может принимать вторым параметром основание системы счисления. Например, parseInt(‘1010’, 2) интерпретирует строку как число в двоичной системе и возвращает 10 (в десятичной системе). Если второе основание не указано, то строка будет интерпретироваться как десятичное число. Важно помнить, что в некоторых случаях, например, если строка начинается с «0x», будет использоваться шестнадцатеричная система счисления.
Что происходит, если строка, переданная в parseInt, содержит недопустимые символы?
Если строка содержит символы, которые не могут быть интерпретированы как цифры, функция parseInt прекратит анализ на первом таком символе. Например, parseInt(‘123abc’) вернет 123, игнорируя все символы после цифр. Если строка начинается с символа, который не является цифрой (например, ‘abc’), parseInt вернет NaN, что означает ошибку преобразования.
Можно ли использовать parseInt для округления чисел в JavaScript?
Функция parseInt не предназначена для округления чисел. Она просто отбрасывает все десятичные знаки и оставляет целую часть числа. Например, parseInt(12.99) вернет 12, но это не является округлением в обычном смысле. Для округления числа лучше использовать функцию Math.round(), которая возвращает ближайшее целое число.
Что такое parseInt в JavaScript и как его использовать?
Метод `parseInt` в JavaScript используется для преобразования строки в целое число. Он принимает два параметра: строку, которую нужно преобразовать, и необязательную основание системы счисления (по умолчанию 10). Например, `parseInt(«42»)` вернёт число 42. Если строка не может быть преобразована в число, метод вернёт `NaN` (Not-a-Number). Важно помнить, что `parseInt` может обработать только начало строки, игнорируя всё, что идет после числа. Например, `parseInt(«42abc»)` вернёт 42.
Как избежать ошибок при использовании parseInt в JavaScript?
При использовании `parseInt` важно учитывать несколько моментов, чтобы избежать ошибок. Во-первых, всегда проверяйте, что строка, передаваемая в метод, действительно может быть интерпретирована как число. Если строка начинается с цифры, но содержит дополнительные символы (например, «123abc»), `parseInt` вернёт только цифры в начале строки. Чтобы предотвратить это, можно использовать дополнительные проверки, например, с помощью регулярных выражений или метода `isNaN()`, чтобы убедиться, что результат преобразования — это действительно число. Также полезно всегда указывать основание системы счисления (второй параметр метода), особенно если вы работаете с числами в других системах счисления (например, в двоичной или шестнадцатеричной). Например, `parseInt(«1010», 2)` вернёт 10 в десятичной системе счисления.
