Funcția isFinite
Funcția isFinite pentru verificarea parametrului
asupra faptului că acesta este un număr finit (adică
nu șir, matrice etc. și nu plus
sau minus infinit).
Cum funcționează această funcție: va returna false,
dacă numărul este plus sau minus infinit
(adică Infinity)
sau nu este un număr (adică NaN),
în restul cazurilor va returna true.
Adică șirurile, matricele etc. vor fi transformate
în NaN și, în consecință, vor returna false.
Cu toate acestea, există excepții: șirul gol
'' returnează true, șirul cu spații ' '
de asemenea returnează true, null
returnează true, pentru valorile true și false
de asemenea se returnează true.
Acest lucru se întâmplă pentru că aceste valori
sunt transformate în numere, și nu în NaN.
Dacă aveți nevoie de o verificare cu adevărat precisă
a numărului, care nu consideră număr șirul
format din spații, valorile logice și speciale
- utilizați următoarea funcție isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Să înțelegem cum funcționează ea.
Funcția isFinite transformă parametrul
într-un număr și returnează true, dacă acesta nu este Infinity,
-Infinity sau NaN.
Astfel, partea dreaptă va elimina clar
non-numerele, dar va lăsa astfel de valori
ca true, false, null, șirul gol '' și
șirul cu spații, deoarece acestea se transformă corect
în numere.
Pentru a elimina aceste valori, este nevoie de funcția
parseFloat,
care pentru true, false, null, '', ' '
va returna NaN. Așa este construită funcția parseFloat: ea
transformă parametrul în șir, adică true,
false, null devin 'true', 'false',
'null', apoi citește din el numărul,
în acest caz șirul gol și șirul cu spații
dau NaN. Apoi rezultatul parseFloat este procesat
cu ajutorul !isNaN,
pentru a obține true sau false în loc de NaN.
Ca rezultat, este eliminat totul, cu excepția șirurilor-numere
și numerelor obișnuite.
Sintaxă
isFinite(valoare);
Exemplu
Acum isFinite va afișa true,
deorece parametrul este un număr:
let num = 3;
console.log(isFinite(num));
Rezultatul executării codului:
true
Exemplu
Acum isFinite va afișa false,
deorece parametrul nu este un număr:
let num = 'abcde';
console.log(isFinite(num));
Rezultatul executării codului:
false
Exemplu
Acum isFinite va afișa false,
deorece parametrul este infinit:
let num = Infinity;
console.log(isFinite(num));
Rezultatul executării codului:
false
Exemplu
Acum isFinite va afișa false,
deorece 1/0 - este în esență Infinity
(infinit):
let num = 1 / 0;
console.log(isFinite(num));
Rezultatul executării codului:
false
Exemplu
Acum isFinite va afișa true,
deorece șirul gol, care nu este un număr,
- este o excepție:
let num = '';
console.log(isFinite(num));
Rezultatul executării codului:
true