23 of 264 menu

Funkce isFinite

Funkce isFinite slouží ke kontrole parametru zda je konečným číslem (tj. ne řetězcem, polem atd. a ne plus nebo minus nekonečnem).

Jak tato funkce funguje: vrátí false, pokud je číslo plus nebo minus nekonečno (tj. Infinity) nebo není číslem (tj. NaN), v ostatních případech vrátí true. To znamená, že řetězce, pole atd. budou převedeny na NaN a podle toho vrátí false.

Existují však výjimky: prázdný řetězec '' vrací true, řetězec s mezerami '    ' také vrací true, null vrací true, pro hodnoty true a false se také vrací true.

To se děje proto, že tyto hodnoty jsou převedeny na čísla, a ne na NaN. Pokud potřebujete skutečně přesnou kontrolu čísla, která nepovažuje za číslo řetězec s mezerami, logické a speciální hodnoty - použijte následující funkci isNumeric:

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

Pojďme se podívat, jak funguje. Funkce isFinite převede parametr na číslo a vrátí true, pokud to není Infinity, -Infinity nebo NaN. Takže pravá část odmítne zjevně nečísla, ale ponechá hodnoty jako true, false, null, prázdný řetězec '' a řetězec s mezerami, protože se správně převádějí na čísla.

K odmítnutí těchto hodnot je potřeba funkce parseFloat, která pro true, false, null, '', '   ' vrátí NaN. Takto je funkce parseFloat navržena: převede parametr na řetězec, tj. true, false, null se stanou 'true', 'false', 'null', a poté z něj přečte číslo, přičemž prázdný řetězec a řetězec s mezerami dávají NaN. Poté je výsledek parseFloat zpracován pomocí !isNaN, čímž získáme true nebo false místo NaN. Výsledkem je, že jsou odmítnuty všechny hodnoty kromě číselných řetězců a běžných čísel.

Syntaxe

isFinite(hodnota);

Příklad

Nyní isFinite vypíše true, protože parametr je číslo:

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

Výsledek provedení kódu:

true

Příklad

Nyní isFinite vypíše false, protože parametr není číslo:

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

Výsledek provedení kódu:

false

Příklad

Nyní isFinite vypíše false, protože parametr je nekonečno:

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

Výsledek provedení kódu:

false

Příklad

Nyní isFinite vypíše false, protože 1/0 je v podstatě Infinity (nekonečno):

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

Výsledek provedení kódu:

false

Příklad

Nyní isFinite vypíše true, protože prázdný řetězec, který není číslem, je výjimka:

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

Výsledek provedení kódu:

true

Viz také

  • funkci isNaN,
    která provádí kontrolu na NaN
  • operátor typeof,
    který určuje typ dat
cshuuzcbnuz