HOWTO · JavaScript

JavaScript === vs ==

In diesem Tutorial erfahren Sie, wann welcher Gleichheitsoperator(== oder ===) verwendet wird.

Vergleichsoperatoren helfen uns festzustellen, ob zwei Variablen gleich sind oder einem bestimmten Kriterium folgen. Bei günstigen Vergleichsergebnissen wird true zurückgegeben; andernfalls gibt es false zurück. Dieses Tutorial erklärt das verwirrendste Thema unter den Vergleichsoperatoren und lehrt, wann welcher Gleichheitsoperator verwendet wird (== oder ===).

Ein einfaches gleich = unterscheidet sich stark von doppelten gleich == und dreifachen gleich ===, da es sich um eine Zuweisungsoperation handelt und es sich um Vergleichsoperatoren handelt. Daher besteht die Verwechslung im Allgemeinen zwischen == und ===.

Loser Gleichheitsoperator (==) in JavaScript

Der Operator == oder Gleichheitsoperator wird auch abstrakter Vergleichsoperator genannt. Es wird abstrakt genannt, weil es sich nur um den Wert und nicht um den Typ der Variablen handelt. Der Operator == führt die Konvertierung von Variablenwerten in den gleichen Typ (Typ-Zwang) durch, bevor er sie miteinander vergleicht und gibt true zurück, wenn die konvertierten Operanden gleich sind. Da der Operator eine Typkonvertierung durchführen muss, ist er in der Regel etwas langsamer als der Operator ===.

Um zu verstehen, wann welcher Operator verwendet werden soll, müssen wir uns zunächst ein wenig mit Typzwang befassen. Es gibt zwei Arten:

  1. Expliziter Zwang: Dies geschieht explizit durch Code mit eingebauten Methoden. Zum Beispiel: Um einen String "42" in eine Zahl umzuwandeln, müssen wir Number("42") schreiben. Auf diese Weise verwenden wir die explizite Methode zur Typkonvertierung Number(), um einen String in eine Zahl umzuwandeln.
  2. Impliziter Zwang: Er wird implizit von der Sprache ausgeübt. Es wird normalerweise ausgeführt, wenn wir zwei verschiedene Arten von Operanden mit einem Operator verwenden. Zum Beispiel: Wenn wir 1 + "" ausführen. Es gibt eine Zahl und eine Zeichenkette, die nicht direkt hinzugefügt werden können, daher wandelt der JavaScript-Typ die Zahl in eine Zeichenkette um, da sie nur so hinzugefügt werden können, und gibt eine Zeichenkette "1" zurück.
23 == '23'         // returns true
true + false == 1  // returns true
undefined ==
    null         // returns true
        [] == 0  // returns true

Strenger Gleichheitsoperator (===) in JavaScript

Der Operator === oder Identitätsoperator wird auch als strikter Vergleichsoperator bezeichnet. Sie wird strikt genannt, weil sie nur dann true zurückgibt, wenn sowohl der Typ als auch der Wert beider Operanden gleich sind. Es führt keine Art von Konvertierung durch; Daher ist er tendenziell schneller als der Operator ==.

true === true  // returns true
true === 1     // returns false

Daher erfordert die Entscheidung, den Operator == oder === zu wählen, einen Typzwang. Wenn man mit Typzwang nicht vertraut ist, sollte man beim strikten Gleichheitsoperator bleiben.