parseInt()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 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); веÑнÑÑ 15
parseInt(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); // ÐÑÐµÐ½Ñ Ð±Ð¾Ð»ÑÑие ÑиÑла ÑÑановÑÑÑÑ 4
parseInt(0.00000000000434, 10); // ÐÑÐµÐ½Ñ Ð¼Ð°Ð»ÐµÐ½Ñкие ÑиÑла ÑÑановÑÑÑÑ 4
СледÑÑÑий пÑÐ¸Ð¼ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ 224:
parseInt("0e0", 16);
ÐоÑÑмеÑиÑÐ½Ð°Ñ Ð¸Ð½ÑеÑпÑеÑаÑÐ¸Ñ Ð±ÐµÐ· ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑиÑÑÐµÐ¼Ñ ÑÑиÑлениÑ
ХоÑÑ ÑÑо не пооÑÑÑеÑÑÑ Ð² ÑпеÑиÑикаÑией ECMAScript 3 и запÑеÑено в ECMAScript 5, многие ÑеализаÑии инÑеÑпÑеÑиÑÑÑÑ ÑиÑловÑÑ ÑÑÑокÑ, наÑинаÑÑÑÑÑÑ Ñ 0, как воÑÑмеÑиÑнÑÑ. СледÑÑÑий пÑÐ¸Ð¼ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ ÐºÐ°Ðº воÑÑмеÑиÑнÑй, Ñак и деÑÑÑиÑнÑй ÑезÑлÑÑаÑ. ЧÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð½ÐµÐ¿Ñедвиденного ÑезÑлÑÑаÑа, вÑегда ÑказÑвайÑе оÑнование ÑиÑÑÐµÐ¼Ñ ÑÑиÑлениÑ.
parseInt("0e0"); // 0
parseInt("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")); // 421
console.log(filterInt("-421")); // -421
console.log(filterInt("+421")); // 421
console.log(filterInt("Infinity")); // Infinity
console.log(filterInt("421e+0")); // NaN
console.log(filterInt("421hop")); // NaN
console.log(filterInt("hop1.61803398875")); // NaN
console.log(filterInt("1.61803398875")); // NaN
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification > # sec-parseint-string-radix > |