Funktio isFinite
Funktio isFinite parametrin tarkistamiseen
siihen, että se on äärellinen luku (eli
ei merkkijono, taulukko jne. eikä plus-
tai miinus äärettömyys).
Miten tämä funktio toimii: se palauttaa false,
jos luku on plus- tai miinusäärettömyys
(eli Infinity)
tai ei ole luku (eli NaN),
muissa tapauksissa se palauttaa true.
Eli merkkijonot, taulukot jne. muunnetaan
NaN:ksi ja palauttavat siten false.
On kuitenkin poikkeuksia: tyhjä merkkijono
'' palauttaa true, välilyönneistä koostuva merkkijono ' '
myös palauttaa true, null
palauttaa true, arvoille true ja false
myös palautetaan true.
Tämä tapahtuu, koska nämä arvot
muunnetaan luvuiksi, eivätkä NaN:iksi.
Jos tarvitset todella tarkan tarkistuksen
luvuksi, joka ei pidä lukuina välilyönneistä koostuvaa merkkijonoa,
loogisia ja erikoisarvoja
- käytä seuraavaa funktiota isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Selvitetään, miten se toimii.
Funktio isFinite muuntaa parametrin
luvuksi ja palauttaa true, jos se ei ole Infinity,
-Infinity tai NaN.
Siten oikea puoli hylkää selvästi
ei-lukuja, mutta jättää sellaiset arvot
kuin true, false, null, tyhjä merkkijono '' ja
välilyönneistä koostuva merkkijono, koska ne muunnetaan oikein
luvuiksi.
Jotta nämä arvot voidaan hylätä, tarvitaan funktio
parseFloat,
joka true:lle, false:lle, null:lle, '':lle, ' ':lle
palauttaa NaN. Näin funktio parseFloat on rakennettu: se
muuntaa parametrin merkkijonoksi, eli true,
false, null tulevat 'true', 'false',
'null':ksi, ja sitten lukee siitä luvun,
jonka yhteydessä tyhjä merkkijono ja välilyönneistä koostuvat merkkijonot
antavat NaN. Sitten parseFloat:n tulosta
käsitellään !isNaN:lla
saadakseen true tai false NaN:n sijaan.
Lopputuloksessa kaikki hylätään paitsi numero-merkkijonot
ja tavalliset luvut.
Syntaksi
isFinite(arvo);
Esimerkki
Nyt isFinite tulostaa true,
koska parametri on luku:
let num = 3;
console.log(isFinite(num));
Koodin suorituksen tulos:
true
Esimerkki
Nyt isFinite tulostaa false,
koska parametri ei ole luku:
let num = 'abcde';
console.log(isFinite(num));
Koodin suorituksen tulos:
false
Esimerkki
Nyt isFinite tulostaa false,
koska parametri on äärettömyys:
let num = Infinity;
console.log(isFinite(num));
Koodin suorituksen tulos:
false
Esimerkki
Nyt isFinite tulostaa false,
koska 1/0 on olennaisesti Infinity
(äärettömyys):
let num = 1 / 0;
console.log(isFinite(num));
Koodin suorituksen tulos:
false
Esimerkki
Nyt isFinite tulostaa true,
koska tyhjä merkkijono, joka ei ole luku,
- on poikkeus:
let num = '';
console.log(isFinite(num));
Koodin suorituksen tulos:
true