Az isFinite függvény
A isFinite függvény arra szolgál, hogy ellenőrizze a paramétert
annak érdekében, hogy véges szám-e (azaz
nem sztring, tömb stb. és nem plusz
vagy mínusz végtelen).
Hogyan működik ez a függvény: false-t ad vissza,
ha a szám plusz vagy mínusz végtelen
(azaz Infinity)
vagy nem szám (azaz NaN),
minden más esetben true-t ad vissza.
Azaz a sztringek, tömbök stb. át lesznek alakítva
NaN-ná és ennek megfelelően false-t fognak visszaadni.
Van azonban kivétel: az üres sztring
'' true-t ad vissza, a szóközöket tartalmazó sztring ' '
szintén true-t ad vissza, a null
true-t ad vissza, a true és false
értékekre szintén true tér vissza.
Ez azért történik, mert ezek az értékek
számokká alakulnak át, és nem NaN-ná.
Ha valóban pontos számellenőrzésre van szüksége,
amely nem tekinti számnak a szóközökből álló sztringet,
a logikai és speciális értékeket
- használja a következő isNumeric függvényt:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Nézzük meg, hogyan működik.
A isFinite függvény átalakítja a paramétert
számmá és true-t ad vissza, ha az nem Infinity,
-Infinity vagy NaN.
Így a jobb oldal kiszűri a nyilvánvalóan
nem szám értékeket, de olyan értékeket hagyj meg,
mint a true, false, null, üres sztring '' és
a szóközöket tartalmazó sztring, mert ezek megfelelően átalakulnak
számokká.
Ezen értékek kiszűréséhez a
parseFloat függvényre van szükség,
amely a true, false, null, '', ' '
értékekre NaN-t ad vissza. A parseFloat függvény így működik: az
átalakítja a paramétert sztringgé, azaz a true,
false, null értékek 'true', 'false',
'null' sztringekké válnak, majd kiolvas belőlük egy számot,
eközben az üres sztring és a szóközöket tartalmazó sztring
NaN-t ad. Ezután a parseFloat eredményét feldolgozza
a !isNaN segítségével,
hogy true vagy false legyen NaN helyett.
Ennek eredményeképpen minden kiszűrődik, kivéve a szám-sztringeket
és a közönséges számokat.
Szintaxis
isFinite(érték);
Példa
Most a isFinite true-t fogja kiírni,
mivel a paraméter szám:
let num = 3;
console.log(isFinite(num));
A kód végrehajtásának eredménye:
true
Példa
Most a isFinite false-t fogja kiírni,
mivel a paraméter nem szám:
let num = 'abcde';
console.log(isFinite(num));
A kód végrehajtásának eredménye:
false
Példa
Most a isFinite false-t fogja kiírni,
mivel a paraméter végtelen:
let num = Infinity;
console.log(isFinite(num));
A kód végrehajtásának eredménye:
false
Példa
Most a isFinite false-t fogja kiírni,
mivel a 1/0 lényegében Infinity
(végtelen):
let num = 1 / 0;
console.log(isFinite(num));
A kód végrehajtásának eredménye:
false
Példa
Most a isFinite true-t fogja kiírni,
mivel az üres sztring, amely nem szám,
kivételt képez:
let num = '';
console.log(isFinite(num));
A kód végrehajtásának eredménye:
true