Funksjonen isFinite
Funksjonen isFinite for å sjekke om en parameter
er et endelig tall (dvs.
ikke en streng, array osv. og ikke pluss
eller minus uendelig).
Hvordan denne funksjonen fungerer: den returnerer false,
hvis tallet er pluss eller minus uendelig
(altså Infinity)
eller ikke et tall (altså NaN),
i andre tilfeller returnerer den true.
Det vil si at strenger, arrays osv. vil bli konvertert
til NaN og følgelig returnere false.
Det er imidlertid unntak: en tom streng
'' returnerer true, en streng med mellomrom ' '
returnerer også true, null
returnerer true, for verdiene true og false
returneres det også true.
Dette skjer fordi disse verdiene
blir konvertert til tall, og ikke til NaN.
Hvis du trenger en virkelig nøyaktig sjekk
på tall, som ikke regner en streng
bestående av mellomrom, boolske og spesielle verdier
som et tall - bruk følgende funksjon isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
La oss finne ut hvordan den fungerer.
Funksjonen isFinite konverterer parameteren
til et tall og returnerer true, hvis det ikke er Infinity,
-Infinity eller NaN.
Dermed vil høyre side fjerne åpenbare
ikke-tall, men lar slike verdier
som true, false, null, tom streng '' og
streng med mellomrom være, fordi de konverteres korrekt
til tall.
For å fjerne disse verdiene, trengs funksjonen
parseFloat,
som for true, false, null, '', ' '
vil returnere NaN. Slik fungerer funksjonen parseFloat: den
konverterer parameteren til en streng, dvs. true,
false, null blir til 'true', 'false',
'null', og leser deretter et tall fra den,
hvor tom streng og streng med mellomrom
gir NaN. Deretter behandles resultatet av parseFloat
ved hjelp av !isNaN,
for å få true eller false i stedet for NaN.
Som et resultat fjernes alt, bortsett fra tall-strenger
og vanlige tall.
Syntaks
isFinite(verdi);
Eksempel
Nå vil isFinite skrive ut true,
siden parameteren er et tall:
let num = 3;
console.log(isFinite(num));
Resultat av kjøring av koden:
true
Eksempel
Nå vil isFinite skrive ut false,
siden parameteren ikke er et tall:
let num = 'abcde';
console.log(isFinite(num));
Resultat av kjøring av koden:
false
Eksempel
Nå vil isFinite skrive ut false,
siden parameteren er uendelig:
let num = Infinity;
console.log(isFinite(num));
Resultat av kjøring av koden:
false
Eksempel
Nå vil isFinite skrive ut false,
siden 1/0 i bunn og grunn er Infinity
(uendelig):
let num = 1 / 0;
console.log(isFinite(num));
Resultat av kjøring av koden:
false
Eksempel
Nå vil isFinite skrive ut true,
siden en tom streng, som ikke er et tall,
er et unntak:
let num = '';
console.log(isFinite(num));
Resultat av kjøring av koden:
true