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:
function 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
isFinite(hodnota);
Príklad
Teraz isFinite vypíše true,
pretože parameter je číslo:
let num = 3;
console.log(isFinite(num));
Výsledok vykonania kódu:
true
Príklad
Teraz isFinite vypíše false,
pretože parameter nie je číslo:
let num = 'abcde';
console.log(isFinite(num));
Výsledok vykonania kódu:
false
Príklad
Teraz isFinite vypíše false,
pretože parameter je nekonečno:
let num = Infinity;
console.log(isFinite(num));
Výsledok vykonania kódu:
false
Príklad
Teraz isFinite vypíše false,
pretože 1/0 - to je v podstate Infinity
(nekonečno):
let num = 1 / 0;
console.log(isFinite(num));
Výsledok vykonania kódu:
false
Príklad
Teraz isFinite vypíše true,
pretože prázdny reťazec, ktorý nie je číslom,
- je výnimka:
let num = '';
console.log(isFinite(num));
Výsledok vykonania kódu:
true