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:

javascriptfunction 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

javascriptisFinite(vrednost);

Primer

Sada će isFinite ispisati true, pošto parametar jeste broj:

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

Rezultat izvršavanja koda:

javascripttrue

Primer

Sada će isFinite ispisati false, pošto parametar nije broj:

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

Rezultat izvršavanja koda:

javascriptfalse

Primer

Sada će isFinite ispisati false, pošto parametar jeste beskonačnost:

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

Rezultat izvršavanja koda:

javascriptfalse

Primer

Sada će isFinite ispisati false, pošto je 1/0 - to je u suštini Infinity (beskonačnost):

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

Rezultat izvršavanja koda:

javascriptfalse

Primer

Sada će isFinite ispisati true, pošto je prazan string, koji nije broj, - izuzetak:

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

Rezultat izvršavanja koda:

javascripttrue

Pogledajte takođe

  • funkciju isNaN,
    koja vrši proveru na NaN
  • operator typeof,
    koji određuje tip podataka