Funktionen isFinite
Funktionen isFinite används för att kontrollera om en parameter
är ett ändligt tal (dvs
inte en sträng, array etc. och inte plus
eller minus oändligheten).
Hur denna funktion fungerar: den returnerar false,
om talet är plus eller minus oändligheten
(dvs Infinity)
eller inte ett tal (dvs NaN),
i andra fall returnerar den true.
Det betyder att strängar, arrayer etc. kommer att omvandlas
till NaN och följaktligen returnera false.
Det finns dock undantag: en tom sträng
'' returnerar true, en sträng med mellanslag ' '
returnerar också true, null
returnerar true, för värdena true och false
returneras också true.
Detta händer eftersom dessa värden
omvandlas till tal, och inte till NaN.
Om du behöver en verkligt exakt kontroll
för tal, som inte anser en sträng
med mellanslag, logiska värden och specialvärden
för tal - använd följande funktion isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Låt oss förstå hur den fungerar.
Funktionen isFinite omvandlar parametern
till ett tal och returnerar true, om det inte är Infinity,
-Infinity eller NaN.
Således kommer höger delen att filtrera bort uppenbara
icke-tal, men lämnar kvar sådana värden
som true, false, null, tom sträng '' och
sträng med mellanslag, eftersom de korrekt omvandlas
till tal.
För att filtrera bort dessa värden behövs funktionen
parseFloat,
som för true, false, null, '', ' '
kommer att returnera NaN. Så fungerar funktionen parseFloat: den
omvandlar parametern till en sträng, dvs true,
false, null blir 'true', 'false',
'null', och läser sedan talet från den,
där tom sträng och sträng med mellanslag
ger NaN. Sedan bearbetas resultatet från parseFloat
med hjälp av !isNaN,
för att få true eller false istället för NaN.
Som ett resultat filtreras allt bort förutom tal-strängar
och vanliga tal.
Syntax
isFinite(värde);
Exempel
Nu kommer isFinite att skriva ut true,
eftersom parametern är ett tal:
let num = 3;
console.log(isFinite(num));
Resultat av kodkörning:
true
Exempel
Nu kommer isFinite att skriva ut false,
eftersom parametern inte är ett tal:
let num = 'abcde';
console.log(isFinite(num));
Resultat av kodkörning:
false
Exempel
Nu kommer isFinite att skriva ut false,
eftersom parametern är oändligheten:
let num = Infinity;
console.log(isFinite(num));
Resultat av kodkörning:
false
Exempel
Nu kommer isFinite att skriva ut false,
eftersom 1/0 - i princip är Infinity
(oändligheten):
let num = 1 / 0;
console.log(isFinite(num));
Resultat av kodkörning:
false
Exempel
Nu kommer isFinite att skriva ut true,
eftersom tom sträng, som inte är ett tal,
är ett undantag:
let num = '';
console.log(isFinite(num));
Resultat av kodkörning:
true