Die Funktion isFinite
Die Funktion isFinite dient dazu, einen Parameter darauf zu prüfen,
ob er eine endliche Zahl ist (also
keine Zeichenkette, kein Array usw. und nicht plus
oder minus unendlich).
So funktioniert diese Funktion: Sie gibt false zurück,
wenn die Zahl plus oder minus unendlich ist
(also Infinity)
oder keine Zahl ist (also NaN),
in allen anderen Fällen gibt sie true zurück.
Das bedeutet, Zeichenketten, Arrays usw. werden in
NaN umgewandelt und geben entsprechend false zurück.
Es gibt jedoch Ausnahmen: Ein leerer String
'' gibt true zurück, ein String mit Leerzeichen ' '
gibt ebenfalls true zurück, null
gibt true zurück, für die Werte true und false
wird ebenfalls true zurückgegeben.
Dies geschieht, weil diese Werte
in Zahlen umgewandelt werden und nicht in NaN.
Wenn Sie eine wirklich genaue Prüfung
auf Zahlen benötigen, die einen String
aus Leerzeichen, boolesche und spezielle Werte
nicht als Zahl betrachtet - verwenden Sie die folgende Funktion isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Lassen Sie uns verstehen, wie sie funktioniert.
Die Funktion isFinite konvertiert den Parameter
in eine Zahl und gibt true zurück, wenn dies nicht Infinity,
-Infinity oder NaN ist.
So filtert der rechte Teil offensichtliche
Nicht-Zahlen aus, lässt aber Werte wie
true, false, null, leeren String '' und
String mit Leerzeichen übrig, da sie korrekt in Zahlen
umgewandelt werden.
Um diese Werte auszufiltern, wird die Funktion
parseFloat benötigt,
die für true, false, null, '', ' '
NaN zurückgibt. So funktioniert die Funktion parseFloat: Sie
konvertiert den Parameter in einen String, d.h. true,
false, null werden zu 'true', 'false',
'null', und liest dann die Zahl daraus aus,
wobei ein leerer String und ein String mit Leerzeichen
NaN ergeben. Dann wird das Ergebnis von parseFloat
mit !isNaN verarbeitet,
um true oder false anstelle von NaN zu erhalten.
Als Ergebnis wird alles aussortiert, außer Zahlen-Strings
und gewöhnlichen Zahlen.
Syntax
isFinite(Wert);
Beispiel
Jetzt gibt isFinite true aus,
da der Parameter eine Zahl ist:
let num = 3;
console.log(isFinite(num));
Ergebnis der Codeausführung:
true
Beispiel
Jetzt gibt isFinite false aus,
da der Parameter keine Zahl ist:
let num = 'abcde';
console.log(isFinite(num));
Ergebnis der Codeausführung:
false
Beispiel
Jetzt gibt isFinite false aus,
da der Parameter unendlich ist:
let num = Infinity;
console.log(isFinite(num));
Ergebnis der Codeausführung:
false
Beispiel
Jetzt gibt isFinite false aus,
da 1/0 im Grunde Infinity
(Unendlichkeit) ist:
let num = 1 / 0;
console.log(isFinite(num));
Ergebnis der Codeausführung:
false
Beispiel
Jetzt gibt isFinite true aus,
da ein leerer String, obwohl keine Zahl,
- eine Ausnahme ist:
let num = '';
console.log(isFinite(num));
Ergebnis der Codeausführung:
true