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:

javascriptfunction 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

javascriptisFinite(värde);

Exempel

Nu kommer isFinite att skriva ut true, eftersom parametern är ett tal:

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

Resultat av kodkörning:

javascripttrue

Exempel

Nu kommer isFinite att skriva ut false, eftersom parametern inte är ett tal:

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

Resultat av kodkörning:

javascriptfalse

Exempel

Nu kommer isFinite att skriva ut false, eftersom parametern är oändligheten:

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

Resultat av kodkörning:

javascriptfalse

Exempel

Nu kommer isFinite att skriva ut false, eftersom 1/0 - i princip är Infinity (oändligheten):

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

Resultat av kodkörning:

javascriptfalse

Exempel

Nu kommer isFinite att skriva ut true, eftersom tom sträng, som inte är ett tal, är ett undantag:

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

Resultat av kodkörning:

javascripttrue

Se även

  • funktionen isNaN,
    som utför kontroll för NaN
  • operatorn typeof,
    som bestämmer datatyp