Funkcija isFinite
Funkcija isFinite služi za proveru parametra
da li je konačan broj (odnosno
da nije string, niz i sl. i nije plus
ili minus beskonačnost).
Kako ova funkcija radi: vraćaće false,
ako je broj plus ili minus beskonačnost
(odnosno Infinity)
ili nije broj (odnosno NaN),
u ostalim slučajevima vraća true.
To jest, stringovi, nizovi i sl. biće konvertovani
u NaN i samim tim vraćaće false.
Međutim, postoje izuzeci: prazan string
'' vraća true, string sa razmacima ' '
takođe vraća true, null
vraća true, za vrednosti true i false
takođe se vraća true.
Ovo se dešava zato što se ove vrednosti
konvertuju u brojeve, a ne u NaN.
Ako vam je potrebna zaista precizna provera
broja, koja ne smatra brojem string
sa razmacima, logičke i specijalne vrednosti
- koristite sledeću funkciju isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Hajde da razumemo kako ona radi.
Funkcija isFinite konvertuje parametar
u broj i vraća true, ako to nije Infinity,
-Infinity ili NaN.
Stoga, desni deo će odbaciti očigledne
nebrojeve, ali će ostaviti vrednosti
poput true, false, null, prazan string '' i
string sa razmacima, jer se ispravno konvertuju
u brojeve.
Da bismo odbacili ove vrednosti, potrebna je funkcija
parseFloat,
koja za true, false, null, '', ' '
vraća NaN. Tako je funkcija parseFloat napravljena: ona
konvertuje parametar u string, odnosno true,
false, null postaju 'true', 'false',
'null', a zatim čita broj iz njega,
pri čemu prazan string i string sa razmacima
daju NaN. Zatim rezultat parseFloat se obrađuje
pomoću !isNaN,
da bismo dobili true ili false umesto NaN.
Kao rezultat, sve je odbačeno, osim stringova-brojeva
i običnih brojeva.
Sintaksa
isFinite(vrednost);
Primer
Sada će isFinite ispisati true,
pošto parametar jeste broj:
let num = 3;
console.log(isFinite(num));
Rezultat izvršavanja koda:
true
Primer
Sada će isFinite ispisati false,
pošto parametar nije broj:
let num = 'abcde';
console.log(isFinite(num));
Rezultat izvršavanja koda:
false
Primer
Sada će isFinite ispisati false,
pošto parametar jeste beskonačnost:
let num = Infinity;
console.log(isFinite(num));
Rezultat izvršavanja koda:
false
Primer
Sada će isFinite ispisati false,
pošto je 1/0 - to je u suštini Infinity
(beskonačnost):
let num = 1 / 0;
console.log(isFinite(num));
Rezultat izvršavanja koda:
false
Primer
Sada će isFinite ispisati true,
pošto je prazan string, koji nije broj,
- izuzetak:
let num = '';
console.log(isFinite(num));
Rezultat izvršavanja koda:
true