Funkcija isFinite
Funkcija isFinite za preverjanje parametra,
ali je končno število (torej
ne niz, matrika itd. in ne plus
ali minus neskončnost).
Kako deluje ta funkcija: vrnila bo false,
če je število plus ali minus neskončnost
(torej Infinity)
ali ne število (torej NaN),
v vseh drugih primerih bo vrnila true.
To pomeni, da bodo nizi, matrike itd. pretvorjeni
v NaN in bodo zato vrnili false.
Vendar obstajajo izjeme: prazen niz
'' vrne true, niz s presledki ' '
prav tako vrne true, null
vrne true, za vrednosti true in false
se prav tako vrne true.
To se zgodi, ker se te vrednosti
pretvorijo v števila in ne v NaN.
Če potrebujete resnično natančno preverjanje
števila, ki ne šteje za število niza
s presledki, logične in posebne vrednosti
- uporabite naslednjo funkcijo isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Poglejmo, kako deluje.
Funkcija isFinite pretvori parameter
v število in vrne true, če to ni Infinity,
-Infinity ali NaN.
Tako bo desni del odstranil očitno
neštevila, vendar bo pustil takšne vrednosti
kot true, false, null, prazen niz '' in
niz s presledki, ker se pravilno pretvorijo
v števila.
Za odstranjevanje teh vrednosti je potrebna funkcija
parseFloat,
ki bo za true, false, null, '', ' '
vrnila NaN. Tako deluje funkcija parseFloat:
pretvori parameter v niz, tj. true,
false, null postanejo 'true', 'false',
'null', nato pa iz nje prebere število,
pri čemer prazen niz in niz s presledki
dasta NaN. Nato se rezultat parseFloat obdela
z !isNaN,
da dobimo true ali false namesto NaN.
Kot rezultat se odstrani vse, razen nizov-števil
in običajnih števil.
Sintaksa
isFinite(vrednost);
Primer
Zdaj bo isFinite izpisal true,
ker je parameter število:
let num = 3;
console.log(isFinite(num));
Rezultat izvajanja kode:
true
Primer
Zdaj bo isFinite izpisal false,
ker parameter ni število:
let num = 'abcde';
console.log(isFinite(num));
Rezultat izvajanja kode:
false
Primer
Zdaj bo isFinite izpisal false,
ker je parameter neskončnost:
let num = Infinity;
console.log(isFinite(num));
Rezultat izvajanja kode:
false
Primer
Zdaj bo isFinite izpisal false,
ker je 1/0 v bistvu Infinity
(neskončnost):
let num = 1 / 0;
console.log(isFinite(num));
Rezultat izvajanja kode:
false
Primer
Zdaj bo isFinite izpisal true,
ker je prazen niz, ki ni število,
- izjema:
let num = '';
console.log(isFinite(num));
Rezultat izvajanja kode:
true