Javascript größer, kleiner, gleich

Voller Fehlerfallen: Vergleichen mit ==

Javascript gleich, größer, kleiner, true und false vergleichen Werte, Variablen oder Anweisungen. Ausgerechnet was am einfachsten klingt, lauert mit versteckten Fehlern: Das doppelte Gleichheitszeichen birgt jede Menge Fallen.

Vergleiche von Werten sind das A und O für Javascript – immer wieder wird geprüft, ob zwei Strings gleich sind, ein bestimmter Wert erreicht oder eine Bedingung true oder false ist.

Vergleichs-Operatoren werden in Logik-Anweisungen benutzt, um Gleichheit oder Unterschiede zwischen Variablen oder Werten festzustellen. Gebraucht werden die Vergleiche vor allem in Bedingungen wie while (a < b) und if (x > 0).

Vergleichs-Operatoren

Gleich ==

== gibt true zurück, wenn beide Werte gleich sind.

let x = 17;
let y = 17;
if (x == y) // gibt true zurück

Das sieht einfach aus, ist aber nicht immer ohne Heimtücke … besser immer gleich im Trio ===

Nicht gleich !=

!= gibt true zurück, wenn die beiden Werte nicht gleich sind.

let x = 17;
let y = 23;
if (x != y) // gibt true zurück

Liest sich: Wenn x nicht gleich y ist …

Strenges Gleich oder identisch ===

=== Gibt true zurück, wenn die beiden Werte gleich und vom selben Datentyp sind.

let x = 17;
let y = "17";
if (x === y) // gibt false zuück

Liest sich: Wenn x identisch mit y ist, also auch vom selben Datentyp …

Strenges Nicht Gleich !==

!== gibt true zurück, wenn die beiden Werte nicht gleich oder nicht vom selben Datentyp sind.

let x = 17;
let y = 17;
if (x !== y) // gibt false zurück, denn beide Werte gleich und vom selben Datentyp sind.

Liest sich: Wenn x nicht identisch mit y und nicht vom selben Datentyp …

Größer als >

> Gibt true zurück, wenn der Wert auf der linken Seite größer als der Wert auf der rechten Seite ist.

let x = 27;
let y = 23;
if (x > y) // true, denn 27 ist größer als 23

Liest sich: Wenn x größer als y ist …

Kleiner als <

< Gibt true zurück, wenn der Wert auf der linken Seite kleiner als der Wert auf der rechten Seite ist.

let x = 700;
let y = 2000;
if (x < y) // true, denn 700 ist kleiner als 2000

Liest sich: Wenn x kleiner als y ist …

Größer Gleich >=

>= gibt true zurück, wenn der Wert auf der linken Seite größer oder gleich dem Wert auf der rechten Seite ist.

let x = 400;
let y = 400;
if (x >= y) // true, denn 400 ist größer oder gleich 400

Liest sich: Wenn x größer oder gleich y ist …

Kleiner Gleich <=

<= gibt true zurück, wenn der Wert auf der linken Seite kleiner oder gleich dem Wert auf der rechten Seite ist.

let x = 100;
let y = 200;
if (x <= y) // false, denn 200 ist nicht kleiner oder gleich 100

Liest sich: Wenn x kleiner oder gleich y ist …

== und != sind heimtückisch

Das doppelte Gleichheitszeichen == liest sich: Wenn x gleich y ist …. Klingt das nicht einfach?


	

Das doppelte Gleichheitszeichen ist die Quelle vieler heimtückischer Fehler in Javascript. Das strenge ist gleich (=== Operator) ist die besser Wahl, denn es schützt vor versteckten Fehlern. Das reguläre ist gleich (== Operator) liefert zahlreiche unerwartete Ergebnisse aufgrund von Typ-Missverständnissen. Zum Glück gibt es noch das dreifache Gleichheitszeichen.

Dasselbe gilt auch für das einfache ungleich !=. Also lieber gleich ein Gleichheitszeichen mehr !==.

Und das ist ein Klassiker unter den Fehlern, und ein gemeiner dazu, denn die zwei Fehler in diesem Snippet heben einander auf:

let myObject = new Object;
let val = myObject [name];
if (val == null) {
   console.log (name + "nicht gefunden");
}

Richtig wäre

let myObject = new Object;
let val = myObject [name];
if (val === undefined) {
   console.log (name + "nicht gefunden");
}

Weitere Operatoren

OperatorBeschreibung
?: (Ternary)"?:" (auch »conditional«, »bedingter« oder Ternary-Operator) führt Zuweisungen abhängig vom Ergebnis einer Abfrage durch und kann als Kurzschrift für if then else benutzt werde.
typeofTestet den Datentyp seines Operanden – z.B. ob eine Variable ein String, eine Zahl oder undefiniert ist.
instanceofTestet ob der linke Operand vom gleichen Typ ist wie der rechte Operand.
deleteLöscht ein selbstgemachtes Objekt, Eigenschaft, Methode oder Array-Element
inPrüft, ob ein Element in einem Objekt enthalten ist
newErzeugt eine Instanz von einem Objekt
thisErzeugt eine Instanz von einem Objekt
voidEvaluiert einen Ausdruck, ohne das Ergebnis zurückzugeben
>?!=