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:

javascriptfunction 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

javascriptisFinite(arvo);

Esimerkki

Nyt isFinite tulostaa true, koska parametri on luku:

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

Koodin suorituksen tulos:

javascripttrue

Esimerkki

Nyt isFinite tulostaa false, koska parametri ei ole luku:

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

Koodin suorituksen tulos:

javascriptfalse

Esimerkki

Nyt isFinite tulostaa false, koska parametri on äärettömyys:

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

Koodin suorituksen tulos:

javascriptfalse

Esimerkki

Nyt isFinite tulostaa false, koska 1/0 on olennaisesti Infinity (äärettömyys):

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

Koodin suorituksen tulos:

javascriptfalse

Esimerkki

Nyt isFinite tulostaa true, koska tyhjä merkkijono, joka ei ole luku, - on poikkeus:

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

Koodin suorituksen tulos:

javascripttrue

Katso myös

  • funktion isNaN,
    joka suorittaa tarkistuksen NaN:lle
  • operaattorin typeof,
    joka määrittää tietotyypin