Funkcia isFinite

Funkcia isFinite slúži na kontrolu parametra či ide o konečné číslo (t.j. nie reťazec, pole atď. a nie plus alebo mínus nekonečno).

Ako táto funkcia funguje: vráti false, ak je číslo plus alebo mínus nekonečno (t.j. Infinity) alebo nie je číslom (t.j. NaN), v ostatných prípadoch vráti true. To znamená, že reťazce, polia atď. budú pretransformované na NaN a preto vrátia false.

Avšak existujú výnimky: prázdny reťazec '' vráti true, reťazec s medzerami ' ' tiež vráti true, null vráti true, pre hodnoty true a false sa tiež vráti true.

Deje sa tak preto, lebo tieto hodnoty sú pretransformované na čísla, a nie na NaN. Ak potrebujete naozaj presnú kontrolu čísla, ktorá nepovažuje za číslo reťazec tvorený medzerami, logické a špeciálne hodnoty - použite nasledujúcu funkciu isNumeric:

javascriptfunction isNumeric(num) {
  return !isNaN(parseFloat(num)) && isFinite(num);
};

Poďme sa pozrieť, ako funguje. Funkcia isFinite pretransformuje parameter na číslo a vráti true, ak to nie je Infinity, -Infinity alebo NaN. Takže pravá časť odmietne zjavné nečísla, ale ponechá také hodnoty ako true, false, null, prázdny reťazec '' a reťazec s medzerami, pretože sa korektne pretransformujú na čísla.

Na to, aby sme tieto hodnoty odmietli, je potrebná funkcia parseFloat, ktorá pre true, false, null, '', ' ' vráti NaN. Takto je funkcia parseFloat postavená: ona pretransformuje parameter na reťazec, t.j. true, false, null sa stanú 'true', 'false', 'null', a potom z nich načíta číslo, pričom prázdny reťazec a reťazec s medzerami dajú NaN. Potom je výsledok parseFloat spracovaný pomocou !isNaN, aby sme dostali true alebo false namiesto NaN. Výsledkom je, že je odmietnuté všetko okrem reťazcov-čísiel a obyčajných čísiel.

Syntax

javascriptisFinite(hodnota);

Príklad

Teraz isFinite vypíše true, pretože parameter je číslo:

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

Výsledok vykonania kódu:

javascripttrue

Príklad

Teraz isFinite vypíše false, pretože parameter nie je číslo:

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

Výsledok vykonania kódu:

javascriptfalse

Príklad

Teraz isFinite vypíše false, pretože parameter je nekonečno:

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

Výsledok vykonania kódu:

javascriptfalse

Príklad

Teraz isFinite vypíše false, pretože 1/0 - to je v podstate Infinity (nekonečno):

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

Výsledok vykonania kódu:

javascriptfalse

Príklad

Teraz isFinite vypíše true, pretože prázdny reťazec, ktorý nie je číslom, - je výnimka:

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

Výsledok vykonania kódu:

javascripttrue

Pozri tiež

  • funkciu isNaN,
    ktorá vykonáva kontrolu na NaN
  • operátor typeof,
    ktorý určuje typ dát