Funktionen isFinite
Funktionen isFinite bruges til at kontrollere om en parameter
er et endeligt tal (dvs.
ikke en streng, et array osv. og ikke plus
eller minus uendelighed).
Sådan fungerer denne funktion: den returnerer false,
hvis tallet er plus eller minus uendelighed
(dvs. Infinity)
eller ikke er et tal (dvs. NaN),
i alle andre tilfælde returnerer den true.
Det vil sige, at strenge, arrays osv. vil blive konverteret
til NaN og vil derfor returnere false.
Der er dog undtagelser: en tom streng
'' returnerer true, en streng med mellemrum ' '
returnerer også true, null
returnerer true, for værdierne true og false
returneres der også true.
Dette sker, fordi disse værdier
konverteres til tal, og ikke til NaN.
Hvis du har brug for en virkelig præcis kontroll
af et tal, som ikke betragter en streng
bestående af mellemrum, logiske værdier og specielle værdier
- brug følgende funktion isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Lad os se på, hvordan den fungerer.
Funktionen isFinite konverterer parameteren
til et tal og returnerer true, hvis det ikke er Infinity,
-Infinity eller NaN.
Således vil højre side frasortere åbenlyst
ikke-tal, men vil lade værdier som
true, false, null, den tomme streng '' og
strengen med mellemrum bestå, da de korrekt konverteres
til tal.
For at frasortere disse værdier er funktionen
parseFloat nødvendig,
som for true, false, null, '', ' '
vil returnere NaN. Sådan fungerer funktionen parseFloat: den
konverterer parameteren til en streng, dvs. true,
false, null bliver til 'true', 'false',
'null', og derefter læser den tallet fra den,
hvorved den tomme streng og strengen med mellemrum
giver NaN. Derefter behandles resultatet af parseFloat
med !isNaN,
for at få true eller false i stedet for NaN.
Som et resultat bliver alt frasorteret undtagen talstrenge
og almindelige tal.
Syntaks
isFinite(værdi);
Eksempel
Nu vil isFinite udskrive true,
da parameteren er et tal:
let num = 3;
console.log(isFinite(num));
Resultatet af kodeudførelsen:
true
Eksempel
Nu vil isFinite udskrive false,
da parameteren ikke er et tal:
let num = 'abcde';
console.log(isFinite(num));
Resultatet af kodeudførelsen:
false
Eksempel
Nu vil isFinite udskrive false,
da parameteren er uendelighed:
let num = Infinity;
console.log(isFinite(num));
Resultatet af kodeudførelsen:
false
Eksempel
Nu vil isFinite udskrive false,
da 1/0 - i bund og grund er Infinity
(uendelighed):
let num = 1 / 0;
console.log(isFinite(num));
Resultatet af kodeudførelsen:
false
Eksempel
Nu vil isFinite udskrive true,
da den tomme streng, som ikke er et tal,
- er en undtagelse:
let num = '';
console.log(isFinite(num));
Resultatet af kodeudførelsen:
true