Функцијата isFinite
Функцијата isFinite за проверка на параметарот
за тоа дали тој е конечен број (т.е.
не стринг, низа и сл. и не плус
или минус бесконечност).
Како функционира оваа функција: таа ќе врати false,
ако бројот е плус или минус бесконечност
(т.е. Infinity)
или не број (т.е. NaN),
во други случаи ќе врати true.
Т.е. стрингови, низи и сл. ќе бидат преобразувани
во NaN и соодветно ќе вратат false.
Сепак, постојат исклучоци: празниот стринг
'' враќа true, стрингот со празни места ' '
исто така враќа true, null
враќа true, за вредностите true и false
исто така се враќа true.
Ова се случува затоа што овие вредности
се преобразуваат во броеви, а не во NaN.
Ако ви треба навистина точна проверка
на број, која не смета како број стринг
од празни места, логички и специјални вредности
- користете ја следнава функција isNumeric:
function 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.
Како резултат, се отсекува сè, освен стринг-броевите
и обичните броеви.
Синтакса
isFinite(вредност);
Пример
Сега isFinite ќе испечати true,
бидејќи параметарот е број:
let num = 3;
console.log(isFinite(num));
Резултат од извршување на кодот:
true
Пример
Сега isFinite ќе испечати false,
бидејќи параметарот не е број:
let num = 'abcde';
console.log(isFinite(num));
Резултат од извршување на кодот:
false
Пример
Сега isFinite ќе испечати false,
бидејќи параметарот е бесконечност:
let num = Infinity;
console.log(isFinite(num));
Резултат од извршување на кодот:
false
Пример
Сега isFinite ќе испечати false,
бидејќи 1/0 - ова е во суштина Infinity
(бесконечност):
let num = 1 / 0;
console.log(isFinite(num));
Резултат од извршување на кодот:
false
Пример
Сега isFinite ќе испечати true,
бидејќи празниот стринг, кој не е број,
- ова е исклучок:
let num = '';
console.log(isFinite(num));
Резултат од извршување на кодот:
true