parseInt()
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
ФункцияparseInt()
принимает строку в качестве аргумента и возвращает целое число в соответствии с указанным основанием системы счисления.
Интерактивный пример
console.log(parseInt("123"));// 123 (default base-10)console.log(parseInt("123", 10));// 123 (explicitly specify base-10)console.log(parseInt(" 123 "));// 123 (whitespace is ignored)console.log(parseInt("077"));// 77 (leading zeros are ignored)console.log(parseInt("1.9"));// 1 (decimal part is truncated)console.log(parseInt("ff", 16));// 255 (lower-case hexadecimal)console.log(parseInt("0xFF", 16));// 255 (upper-case hexadecimal with "0x" prefix)console.log(parseInt("xyz"));// NaN (input can't be converted to an integer)
Синтаксис
parseInt(string, radix);
Параметры
string
Значение, которое необходимо проинтерпретировать. Если значение параметра
string
не принадлежит строковому типу, оно преобразуется в него (с помощью абстрактной операцииToString
). Пробелы в начале строки не учитываются.
radix
Целое число в диапазоне между 2 и 36, представляющее собой основание системы счисления числовой строки
string
, описанной выше. В основном пользователи используют десятичную систему счисления и указывают 10.Всегда указывайте этот параметр, чтобы исключить ошибки считывания и гарантировать корректность исполнения и предсказуемость результата. Когда основание системы счисления не указано, разные реализации могут возвращать разные результаты.
Возвращаемое значение
Целое число, полученное парсингом (разбором и интерпретацией) переданной строки. Если первый символ не получилось сконвертировать в число, то возвращаетсяNaN
.
Описание
ФункцияparseInt
преобразует первый переданный ей аргумент в строковый тип, интерпретирует его и возвращает целое число или значениеNaN
. Результат (если неNaN
) является целым числом и представляет собой первый аргумент (string
), рассматривающийся как число в указанной системе счисления (radix
). Например, основание 10 указывает на преобразование из десятичного числа, 8 - восьмеричного, 16 - шестнадцатеричного и так далее. Если основание больше10
, то для обозначения цифр больше9
используются буквы. Например, для шестнадцатеричных чисел (основание 16) используются буквы отA
доF
.
Если функцияparseInt
встречает символ, не являющийся числом в указанной системе счисления, она пропускает этот и все последующие символы (даже, если они подходящие) и возвращает целое число, преобразованное из части строки, предшествовавшей этому символу.parseInt
отсекает дробную часть числа. Пробелы в начале и конце строки разрешены.
Так как некоторые числа включают символe
в своём строковом представлении (например,6.022e23
), то использованиеparseInt
для усечения числовых значений может дать неожиданные результаты, когда используются очень малые или очень большие величины.parseInt
не должна использоваться как замена дляMath.floor()
.
Если основание системы счисления имеет значениеundefined
(не определено) или равно 0 (или не указано), то JavaScript по умолчанию предполагает следующее:
- Если значение входного параметра
string
начинается с "0x
" или "0X
",за основание системы счисления принимается 16, и интерпретации подвергается оставшаяся часть строки. - Если значение входного параметра
string
начинается с "0",за основание системы счисления принимается либо 8, либо 10, в зависимости от конкретной реализации. В спецификации ECMAScript 5 прописано использование 10 (десятичная система), но это поддерживается ещё не всеми браузерами, поэтому необходимовсегда указывать основание системы счисления при использовании функцииparseInt
. - Если значение входного параметра
string
начинается с любого другого символа, система счисления считается десятичной (основание 10).
Если первый символ строки не может быть преобразован в число,parseInt
возвращает значениеNaN
.
С точки зрения математики, значениеNaN
не является числом в какой-либо системе счисления. Чтобы определить, вернёт лиparseInt
значениеNaN
в качестве результата, можно вызвать функциюisNaN
. ЕслиNaN
участвует в арифметических операциях, результатом также будетNaN
.
Для преобразования числа в строку в указанной системе счисления, используйтеintValue.toString(radix)
.
Примеры
Пример: ИспользованиеparseInt
Все следующие примеры возвращают15
:
parseInt(" 0xF", 16);parseInt(" F", 16);parseInt("17", 8);parseInt(021, 8);parseInt("015", 10); //parseInt(015, 10); вернёт 15parseInt(15.99, 10);parseInt("FXX123", 16);parseInt("1111", 2);parseInt("15*3", 10);parseInt("15e2", 10);parseInt("15px", 10);parseInt("12", 13);
Все следующие примеры возвращаютNaN
:
parseInt("Hello", 8); // Не является числомparseInt("546", 2); // Неверное число в двоичной системе счисления
Все следующие примеры возвращают-15
:
parseInt("-F", 16);parseInt("-0F", 16);parseInt("-0XF", 16);parseInt(-15.1, 10);parseInt(" -17", 8);parseInt(" -15", 10);parseInt("-1111", 2);parseInt("-15e1", 10);parseInt("-12", 13);
Все следующие примеры возвращают4
:
parseInt(4.7, 10);parseInt(4.7 * 1e22, 10); // Очень большие числа становятся 4parseInt(0.00000000000434, 10); // Очень маленькие числа становятся 4
Следующий пример возвращает224
:
parseInt("0e0", 16);
Восьмеричная интерпретация без указания системы счисления
Хотя это не поощряется в спецификацией ECMAScript 3 и запрещено в ECMAScript 5, многие реализации интерпретируют числовую строку, начинающуюся с0
, как восьмеричную. Следующий пример может иметь как восьмеричный, так и десятичный результат.Чтобы избежать непредвиденного результата, всегда указывайте основание системы счисления.
parseInt("0e0"); // 0parseInt("08"); // 0, '8' не является цифрой в восьмеричной системе.
ECMAScript 5 устраняет восьмеричную интерпретацию
Спецификация ECMAScript 5 функцииparseInt
больше не разрешает трактовать в восьмеричной системе счисления строки, начинающиеся с0
. ECMAScript 5 провозглашает:
ФункцияparseInt
производит целочисленное значение в результате интерпретации содержимого строкового аргумента в соответствии с указанным основанием системы счисления. Пробел в начале строки не учитывается. Если основание системы счисления не определено или равно0
, оно считается равным10
, за исключением случаев, когда строка начинается с пар символов0x
или0X
: тогда за основание принимается 16. Если основанием системы счисления указано16
, число также может начинаться с пар символов0x
или0X
.
В этом ECMAScript 5 расходится со спецификацией ECMAScript 3, в которой восьмеричная интерпретация не поощрялась, но и не была запрещена.
Поскольку на момент 2013 года описанное выше поведение было применено не во всех реализациях, а поддержка старых браузеров является необходимой,всегда указывайте основание системы счисления.
Более строгая функция интерпретации
Иногда необходим более строгий способ интерпретации целочисленных значений. В этом могут помочь регулярные выражения:
var filterInt = function (value) { if (/^(\-|\+)?([0-9]+|Infinity)$/.test(value)) return Number(value); return NaN;};console.log(filterInt("421")); // 421console.log(filterInt("-421")); // -421console.log(filterInt("+421")); // 421console.log(filterInt("Infinity")); // Infinityconsole.log(filterInt("421e+0")); // NaNconsole.log(filterInt("421hop")); // NaNconsole.log(filterInt("hop1.61803398875")); // NaNconsole.log(filterInt("1.61803398875")); // NaN
Спецификации
Specification |
---|
ECMAScript® 2026 Language Specification # sec-parseint-string-radix |