parseInt() читает целое число из строки.
Это глобальная функция JavaScript. Она полезна, когда число нужно извлечь из начала строки, а не строго преобразовать всё значение целиком.
Синтаксис
parseInt(string)
parseInt(string, radix)
string - значение, из которого нужно прочитать число.
radix - основание системы счисления, например:
10для десятичной2для двоичной16для шестнадцатеричной
Что делает parseInt()
parseInt() идёт по строке слева направо и читает число, пока встречает подходящие символы.
console.log(parseInt("123", 10)); // 123
console.log(parseInt("42px", 10)); // 42
console.log(parseInt("3.14", 10)); // 3
Как только функция натыкается на неподходящий символ, чтение останавливается.
Что возвращает parseInt()
Если число удалось прочитать, parseInt() возвращает значение типа number.
Если не удалось, результатом будет NaN.
console.log(parseInt("123", 10)); // 123
console.log(parseInt("hello", 10)); // NaN
console.log(parseInt("", 10)); // NaN
Проверять NaN лучше через Number.isNaN():
const result = parseInt("hello", 10);
console.log(Number.isNaN(result)); // true
parseInt() читает только целую часть
Это важный момент.
console.log(parseInt("3.14", 10)); // 3
console.log(parseInt("15.99", 10)); // 15
parseInt() не округляет число, а просто останавливается перед точкой.
Пробелы в начале строки
Начальные пробелы игнорируются.
console.log(parseInt(" 42", 10)); // 42
Если строка начинается не с числа
Если в начале строки нет подходящих цифр, результатом будет NaN.
console.log(parseInt("hello123", 10)); // NaN
console.log(parseInt("px42", 10)); // NaN
Почему radix лучше указывать явно
Второй аргумент лучше передавать почти всегда.
console.log(parseInt("123", 10)); // 123
console.log(parseInt("101", 2)); // 5
console.log(parseInt("ff", 16)); // 255
Это делает код понятнее и убирает лишние вопросы о том, в какой системе счисления читается строка.
Особый случай с 0x
Если radix не передан, parseInt() умеет распознавать шестнадцатеричную запись с префиксом 0x.
console.log(parseInt("0x10")); // 16
Но для двоичной и восьмеричной записи такого удобства уже нет:
console.log(parseInt("0b11")); // 0
console.log(parseInt("08")); // 8
Поэтому правило простое: если основание важно, указывай radix явно.
parseInt() и Number()
Эти функции часто путают, но они работают по-разному.
console.log(parseInt("123px", 10)); // 123
console.log(Number("123px")); // NaN
parseInt() читает число из начала строки.
Number() требует, чтобы вся строка целиком была корректным числом.
Ещё пример:
console.log(parseInt("3.14", 10)); // 3
console.log(Number("3.14")); // 3.14
Если нужна строгая полная конвертация, чаще лучше подходит Number().
parseInt() и parseFloat()
parseInt() читает только целую часть.
parseFloat() умеет читать дробные числа.
console.log(parseInt("3.14", 10)); // 3
console.log(parseFloat("3.14")); // 3.14
Поэтому выбор зависит от того, нужен ли результат именно целым числом.
parseInt() и нестроковые значения
Функция сначала приводит аргумент к строке, а потом пытается читать число.
console.log(parseInt(15.99, 10)); // 15
console.log(parseInt(true, 10)); // NaN
console.log(parseInt(null, 10)); // NaN
На практике parseInt() почти всегда используют именно со строками.
Недопустимый radix
Если radix меньше 2 или больше 36, результатом будет NaN.
console.log(parseInt("10", 1)); // NaN
console.log(parseInt("10", 37)); // NaN
Когда это полезно
parseInt() удобно использовать, когда:
- нужно вытащить целое число из начала строки
- в строке после числа могут идти другие символы
- важно читать число в определённой системе счисления
Пример:
const width = "320px";
const value = parseInt(width, 10);
console.log(value); // 320
Частые ошибки
Забывать указывать radix
parseInt("101");
Такой код может работать, но обычно лучше писать явно:
parseInt("101", 10);
Думать, что parseInt() округляет
console.log(parseInt("3.99", 10)); // 3
Функция не округляет, а просто перестаёт читать строку на точке.
Путать parseInt() и Number()
console.log(parseInt("123px", 10)); // 123
console.log(Number("123px")); // NaN
Они решают похожую задачу, но делают это по-разному.
Проверять NaN через ===
const value = parseInt("hello", 10);
console.log(value === NaN); // false
Для проверки нужен Number.isNaN().
Быстрая памятка
parseInt()читает целое число из начала строки- если чтение не удалось, результатом будет
NaN - функция останавливается на первом неподходящем символе
radixобычно лучше указывать явноparseInt()не округляет число, а читает только целую часть
Коротко
parseInt() - это удобный способ извлечь целое число из строки в JavaScript. Главное, что стоит запомнить: функция читает число только с начала строки, останавливается на первом неподходящем символе и почти всегда должна использоваться с явным radix.