JavaScript und die Gleichheitszeichen

Kennt ihr alle Gleichheitszeichen-Operatoren in JavaScript? Was jeder sicherlich schon gesehen hat, sind diese beiden: = und == bzw. diesen hier: !=.

Doch damit nicht genug. Es gibt da noch einen bzw. zwei, wenn man die Negation mit aufzählt. Die sehen dann folgendermaßen aus: === und !==.

Was machen diese ganzen Zeichen denn jetzt eigentlich? Dafür gucken wir uns das ganze doch einfach mal direkt in Visual Studio an.

Am Anfang erstellen wir mal ein paar Variablen. Damit wäre das = auch geklärt. Es dient der Zuweisung von Werten.

Das sollte ja soweit geläufig sein. Nun aber zu den interessanten Operatoren. ==, != und === sind Vergleichsoperatoren. Es wird überprüft, ob die Werte der Variablen, die wir miteinander vergleichen wollen, gleich sind. Dafür mal ein paar kleine Tests mit dem == Operator.

Dies sollte für eine kleine Übersicht reichen. Wir vergleichen ganz einfach den linken und rechten Wert und bekommen true oder false zurück. Was auffällt ist, dass wir eine Zeichenkette “0“ mit einer Zahl 0 vergleichen können und als Ergebnis true erhalten. Warum eigentlich?

Dafür gucken wir uns am besten mal die letzte Variante an, den === Operator.

Da hat sich einiges getan, wie man unschwer erkennen kann. 0 === false ist plötzlich false und nicht mehr wie oben true. Auch andere Vergleiche haben sich geändert. Jetzt die Frage, warum das alles passiert.

 

Es ist eigentlich ziemlich simple. Mit == vergleichen wir die Werte mit einer Typumwandlung. Wenn wir 0 == false vergleichen, wandelt er einen der Werte um. False hat den Wert 0 und die Aussage wird wahr.

 Mit  === gibt es keine Typumwandlung. Es werden Wert und Typ verglichen. Da 0 vom Typ number ist und false vom Typ boolean, wird die Aussage unwahr. Die Aussage wird nur dann true, wenn sowohl Typ als auch der Wert identisch sind.

Warum ist dann aber new String("Hallo") === "Hallo" false? Es ist doch beides ein String, oder? Nicht ganz. new String() erzeugt ein Objekt. Es wird also ein Objekt mit einem String verglichen. Es sind unterschiedliche Typen und das Ergebnis somit false. Auch hier kommt nur true bei raus, wenn es sich bei beiden um Strings bzw. Objekte handelt und die Zeichenkette identisch ist.

Ein hilfreiches Video dazu, gibt es von Hannes Preishuber: https://www.youtube.com/watch?v=5CpwSPBT_B0

Kommentare sind geschlossen