W3docs

JavaScript-Operatoren

JavaScript-Operatoren werden verwendet, um Werte zuzuweisen, zu vergleichen, arithmetische Operationen durchzuführen und mehr. Dieses Kapitel beschreibt alle wichtigen Operatoren.

Einführung

Ein Operator nimmt einen oder mehrere Werte (seine Operanden) und erzeugt einen neuen Wert. In JavaScript verwenden Sie Operatoren, um Arithmetik durchzuführen, Werte zu vergleichen, Werte Variablen zuzuweisen und logische Bedingungen zu erstellen. Dieses Kapitel behandelt die Operatoren, die man täglich benötigt — Zuweisung, Arithmetik, Vergleich und string-Verkettung — erklärt die Typumwandlung, die manche Ergebnisse überraschend macht, und endet mit einer Referenz zur Operatorpriorität, damit Sie wissen, was zuerst ausgewertet wird.

Ein paar Begriffe, die durchgängig verwendet werden:

  • Operand — der Wert, auf den ein Operator angewendet wird. In 5 + 3 sind 5 und 3 Operanden.
  • Unärer Operator — nimmt einen Operanden (z. B. -x).
  • Binärer Operator — nimmt zwei Operanden (z. B. x + y).
  • Ternärer Operator — nimmt drei Operanden; JavaScript hat genau einen (?:).

Zuweisungsoperatoren

Der grundlegende Zuweisungsoperator = speichert einen Wert in einer Variable. Die zusammengesetzten Zuweisungsoperatoren kombinieren eine arithmetische Operation mit der Zuweisung, sodass x += 5 eine Kurzschreibweise für x = x + 5 ist.

OperatorBeispielEntspricht
=x = 5
+=x += 5x = x + 5
-=x -= 5x = x - 5
*=x *= 5x = x * 5
/=x /= 5x = x / 5
%=x %= 5x = x % 5
**=x **= 2x = x ** 2

javascript— editable

Beachten Sie, dass = eine Zuweisung ist, kein Vergleich. Um Werte zu vergleichen, verwenden Sie === oder == (siehe unten).

Arithmetische Operatoren in JavaScript

Grundoperatoren: Addition (+), Subtraktion (-), Multiplikation (*) und Division (/)

Diese Operatoren führen die vier grundlegenden arithmetischen Operationen durch.


javascript— editable

Modulo (%) und Potenzierung (**)

Modulo (%) gibt den Rest einer Division zurück — nützlich für Tests wie „Ist diese Zahl gerade?" (n % 2 === 0). Potenzierung (**) erhebt eine Zahl in eine Potenz.


javascript— editable

Unäres Plus und Minus

- negiert einen Wert, und das unäre + wandelt seinen Operanden in eine Zahl um — eine schnelle Möglichkeit, einen numerischen string in eine Zahl zu konvertieren.


javascript— editable

Inkrement (++) und Dekrement (--)

++ addiert 1 zu einer Variable und -- subtrahiert 1. Ihre Position ist entscheidend: Die Präfix-Form (++x) ändert den Wert und gibt den neuen zurück, während die Postfix-Form (x++) zuerst den alten Wert zurückgibt und ihn dann ändert.


javascript— editable

JavaScript-Vergleichsoperatoren

Vergleichsoperatoren geben immer einen boolean-Wert (true oder false) zurück. Weitere Details finden Sie im dedizierten Kapitel Vergleichsoperatoren.

Strikte (===) und lose (==) Gleichheit

Strikte Gleichheit (===) gibt nur dann true zurück, wenn beide Operanden denselben Typ und denselben Wert haben — sie konvertiert niemals Typen. Lose Gleichheit (==) wandelt die Operanden zunächst in einen gemeinsamen Typ um und vergleicht dann, was zu überraschenden Ergebnissen führen kann.

Ihre negierten Formen sind !== (strikte Ungleichheit) und != (lose Ungleichheit).


javascript— editable
Info

Bevorzugen Sie === und !==. Strikte Vergleiche vermeiden die versteckten Typumwandlungen von == und machen Ihren Code vorhersehbar. Verwenden Sie == nur, wenn Sie absichtlich eine Typumwandlung wünschen (zum Beispiel matcht value == null sowohl null als auch undefined).

Größer als (>), Kleiner als (<) und deren „oder gleich"-Varianten

Diese Operatoren vergleichen die Reihenfolge. Sie haben auch die Varianten >= (größer als oder gleich) und <= (kleiner als oder gleich).


javascript— editable

Vergleich nicht-numerischer Werte

Bei relationalen Operatoren (<, >, <=, >=) führt JavaScript eine Typumwandlung durch. Die Regel: Wenn beide Operanden strings sind, werden sie Zeichen für Zeichen (alphabetisch) verglichen; andernfalls werden beide Operanden vor dem Vergleich in Zahlen umgewandelt.

Das erklärt ein Ergebnis, das auf den ersten Blick falsch wirkt:


javascript— editable

NaN-Vergleiche

NaN (Not-A-Number) ist der einzige Wert, der mit nichts gleich ist, nicht einmal mit sich selbst. Daher kann === NaN niemals zur Erkennung verwendet werden. Verwenden Sie stattdessen Number.isNaN().


javascript— editable

String-Verkettung und der binäre +-Operator

Strings verketten

In JavaScript wird der +-Operator sowohl für numerische Addition als auch für string-Verkettung verwendet.


javascript— editable

Binäres + und Typumwandlung

Wenn ein Operand ein string ist, wandelt JavaScript den anderen ebenfalls in einen string um.


javascript— editable

Bewährte Methoden für die Verkettung

Tipp

Verwenden Sie Template-Literale für mehr Klarheit und um Verwechslungen mit der numerischen Addition zu vermeiden.


javascript— editable

Logische, bedingte und Typoperatoren

JavaScript verfügt über weitere Operatorfamilien, die jeweils ein eigenes Kapitel haben. Hier ist eine kurze Übersicht, damit Sie wissen, was sie tun und wo Sie mehr lesen können.

Logische Operatoren (&&, ||, !)

&& (UND), || (ODER) und ! (NICHT) kombinieren boolean-Bedingungen. && und || sind auch kurzschließend und geben einen ihrer Operanden zurück (nicht immer einen boolean), was sie praktisch für Standardwerte und Schutzprüfungen macht. Siehe Logische Operatoren.


javascript— editable

Bedingter (ternärer) Operator (?:)

Der ternäre Operator ist ein kompaktes if/else, das einen Wert zurückgibt: Bedingung ? WertWennWahr : WertWennFalsch. Siehe Bedingte Operatoren.


javascript— editable

typeof und instanceof

typeof gibt einen string zurück, der den Typ eines Werts benennt. instanceof prüft, ob ein object von einem bestimmten Konstruktor erstellt wurde — behandelt in Klassen-Überprüfung: instanceof.


javascript— editable

Operatorpriorität

Wenn ein Ausdruck Operatoren kombiniert, entscheidet die Priorität, welcher zuerst ausgeführt wird, und die Assoziativität bestimmt die Reihenfolge bei Operatoren gleicher Priorität. Zum Beispiel hat * eine höhere Priorität als +, sodass 2 + 3 * 4 gleich 14 ist, nicht 20.

Hier sind die gängigen Operatoren von der höchsten zur niedrigsten Priorität:

PrioritätOperatorenBeschreibung
Höchste()Gruppierung
++ -- (Postfix)Postfix-Inkrement/-Dekrement
! + - ++ -- typeof (Präfix)Unäre Operatoren
**Potenzierung (rechtsassoziativ)
* / %Multiplikation, Division, Rest
+ -Addition, Subtraktion
< <= > >= instanceofRelationale Vergleiche
== != === !==Gleichheit
&&Logisches UND
||Logisches ODER
? :Bedingt (ternär)
Niedrigste= += -=Zuweisung (rechtsassoziativ)

javascript— editable
Info

Im Zweifelsfall Klammern hinzufügen. Sie kosten zur Laufzeit nichts und machen die beabsichtigte Reihenfolge für den nächsten Leser offensichtlich.

Zusammenfassung und häufige Stolperfallen

  • Verwenden Sie === / !==, nicht == / !=, es sei denn, Sie möchten gezielt eine Typumwandlung.
  • '2' < true ist false, weil relationale Operatoren nicht-string-Operanden in Zahlen umwandeln (2 < 1).
  • String-Vergleiche sind alphabetisch, daher ist '10' < '9' true, obwohl 10 < 9 false ist.
  • Testen Sie auf NaN mit Number.isNaN(x)x === NaN ist immer false.
  • + ist überladen: Mit einem string-Operanden verkettet es ('3' + 2 ergibt '32'); bevorzugen Sie Template-Literale für mehr Klarheit.
  • x++ gibt den alten Wert zurück, ++x den neuen.
  • ** und = sind rechtsassoziativ; die meisten anderen binären Operatoren sind linksassoziativ.
  • Greifen Sie auf Klammern zurück, anstatt die vollständige Prioritätstabelle auswendig zu lernen.

Übungen

Übung
Welche der folgenden Aussagen über JavaScript-Vergleiche sind korrekt?
Welche der folgenden Aussagen über JavaScript-Vergleiche sind korrekt?
Was this page helpful?