Функция isFinite

Функцията isFinite служи за проверка на параметър дали е крайно число (тоест не низ, масив и т.н. и не плюс или минус безкрайност).

Как работи тази функция: тя ще върне false, ако числото е плюс или минус безкрайност (тоест Infinity) или не е число (тоест NaN), в останалите случаи връща true. Тоест низове, масиви и т.н. ще бъдат преобразувани в NaN и съответно ще върнат false.

Обаче има изключения: празен низ '' връща true, низ с интервали ' ' също връща true, null връща true, за стойностите true и false също се връща true.

Това се случва, защото тези стойности се преобразуват в числа, а не в NaN. Ако имате нужда от наистина точна проверка за число, която не счита за число низ от интервали, логически и специални стойности - използвайте следната функция isNumeric:

javascriptfunction isNumeric(num) {
  return !isNaN(parseFloat(num)) && isFinite(num);
};

Нека разберем как работи тя. Функцията isFinite преобразува параметъра към число и връща true, ако това не е Infinity, -Infinity или NaN. По този начин дясната част отхвърля явно нечисла, но оставя такива стойности като true, false, null, празен низ '' и низ с интервали, тъй като те се преобразуват коректно в числа.

За да се отхвърлят тези стойности, е необходима функцията parseFloat, която за true, false, null, '', ' ' ще върне NaN. Така е устроена функцията parseFloat: тя преобразува параметъра към низ, т.е. true, false, null стават 'true', 'false', 'null', а след това чете от него число, като празен низ и низ с интервали дават NaN. След това резултатът от parseFloat се обработва с помощта на !isNaN, за да се получи true или false вместо NaN. В резултат се отхвърля всичко, освен низове-числа и обикновени числа.

Синтаксис

javascriptisFinite(стойност);

Пример

Сега isFinite ще изведе true, тъй като параметърът е число:

javascriptlet num = 3;
console.log(isFinite(num));

Резултат от изпълнението на кода:

javascripttrue

Пример

Сега isFinite ще изведе false, тъй като параметърът не е число:

javascriptlet num = 'abcde';
console.log(isFinite(num));

Резултат от изпълнението на кода:

javascriptfalse

Пример

Сега isFinite ще изведе false, тъй като параметърът е безкрайност:

javascriptlet num = Infinity;
console.log(isFinite(num));

Резултат от изпълнението на кода:

javascriptfalse

Пример

Сега isFinite ще изведе false, тъй като 1/0 - това по същество е Infinity (безкрайност):

javascriptlet num = 1 / 0;
console.log(isFinite(num));

Резултат от изпълнението на кода:

javascriptfalse

Пример

Сега isFinite ще изведе true, тъй като празен низ, който не е число, - това е изключение:

javascriptlet num = '';
console.log(isFinite(num));

Резултат от изпълнението на кода:

javascripttrue

Вижте също

  • функцията isNaN,
    която извършва проверка за NaN
  • операторът typeof,
    който определя типа на данните