Ausdrücke und Operatoren
In diesem Kapitel werden alle JavaScript-Sprachoperatoren, -ausdrücke und -schlüsselwörter dokumentiert.
Ausdrücke und Operatoren nach Kategorie
Eine alphabetische Auflistung finden Sie in der Seitenleiste auf der linken Seite.
Primäre Ausdrücke
Grundlegende Schlüsselwörter und allgemeine Ausdrücke in JavaScript. Diese Ausdrücke haben die höchste Präzedenz (höher als Operatoren).
this-
Das Schlüsselwort
thisverweist auf eine spezielle Eigenschaft eines Ausführungskontexts. - Literale
-
Grundlegende
null-, boolesche, Zahlen- und String-Literale. []-
Syntax für Array-Initialisierung/-Literale.
{}-
Syntax für Objekt-Initialisierung/-Literale.
function-
Das Schlüsselwort
functiondefiniert einen Funktionsausdruck. class-
Das Schlüsselwort
classdefiniert einen Klassenausdruck. function*-
Das Schlüsselwort
function*definiert einen Generatorfunktionsausdruck. async function-
async functiondefiniert einen asynchronen Funktionsausdruck. async function*-
Die Schlüsselwörter
async function*definieren einen asynchronen Generatorfunktionsausdruck. /ab+c/i-
Syntax für Reguläre-Ausdrücke-Literale.
`string`-
Syntax für Template-Literale.
( )-
Gruppierungsoperator.
Ausdrücke auf der linken Seite
Linke Werte sind das Ziel einer Zuweisung.
- Eigenschaftszugreifer
-
Member-Operatoren ermöglichen den Zugriff auf eine Eigenschaft oder Methode eines Objekts (
object.propertyundobject["property"]). ?.-
Der optionale Verkettungsoperator gibt
undefinedzurück, anstatt einen Fehler zu verursachen, wenn eine Referenz nullish (nulloderundefined) ist. new-
Der Operator
newerstellt eine Instanz eines Konstruktors. new.target-
In Konstruktoren verweist
new.targetauf den Konstruktor, der durchnewaufgerufen wurde. import.meta-
Ein Objekt, das kontextspezifische Metadaten für ein JavaScript-Modul bereitstellt.
super-
Das Schlüsselwort
superruft den übergeordneten Konstruktor auf oder ermöglicht den Zugriff auf Eigenschaften des übergeordneten Objekts. import()-
Die Syntax
import()ermöglicht das asynchrone und dynamische Laden eines Moduls in eine potenziell nicht modulare Umgebung. import.source()-
Die Syntax
import.source()führt zu einem Objekt, das den kompilierten Quellcode des Moduls darstellt, ohne dessen Abhängigkeiten zu laden, es zu verknüpfen oder auszuwerten.
Inkrementierung und Dekrementierung
Postfix-/Präfix-Inkrementierungs- und Postfix-/Präfix-Dekrementierungsoperatoren.
Unäre Operatoren
Eine unäre Operation ist eine Operation mit nur einem Operanden.
delete-
Der Operator
deletelöscht eine Eigenschaft aus einem Objekt. void-
Der Operator
voidwertet einen Ausdruck aus und verwirft seinen Rückgabewert. typeof-
Der Operator
typeofbestimmt den Typ eines gegebenen Objekts. +-
Der unäre Plus-Operator konvertiert seinen Operanden in den Typ Number.
--
Der unäre Negationsoperator konvertiert seinen Operanden in den Typ Number und negiert ihn anschlieÃend.
~-
Bitweiser NOT-Operator.
!-
Logischer NOT-Operator.
await-
Hält eine asynchrone Funktion an und setzt sie fort und wartet auf die Erfüllung/Ablehnung des Promise.
Arithmetische Operatoren
Arithmetische Operatoren verwenden numerische Werte (entweder Literale oder Variablen) als ihre Operanden und geben einen einzelnen numerischen Wert zurück.
Vergleichsoperatoren
Ein Vergleichsoperator vergleicht seine Operanden und gibt einen booleschen Wert zurück, der darauf basiert, ob der Vergleich wahr ist.
<(Kleiner als)-
Kleiner-als-Operator.
>(GröÃer als)-
GröÃer-als-Operator.
<=-
Kleiner-oder-gleich-Operator.
>=-
GröÃer-oder-gleich-Operator.
instanceof-
Der Operator
instanceofbestimmt, ob ein Objekt eine Instanz eines anderen Objekts ist. in-
Der Operator
inbestimmt, ob ein Objekt eine bestimmte Eigenschaft hat.
Hinweis:
=> ist kein Operator, sondern die Notation für Arrow-Funktionen.
Gleichheitsoperatoren
Das Ergebnis der Auswertung eines Gleichheitsoperators ist immer vom Typ boolean und hängt davon ab, ob der Vergleich wahr ist.
Bitweise Verschiebungsoperatoren
Operationen zum Verschieben aller Bits des Operanden.
Binäre bitweise Operatoren
Bitweise Operatoren behandeln ihre Operanden als einen Satz aus 32 Bits (Nullen und Einsen) und geben standardmäÃige numerische JavaScript-Werte zurück.
Binäre logische Operatoren
Logische Operatoren implementieren boolesche (logische) Werte und weisen Kurzschlussverhalten auf.
Bedingter (ternärer) Operator
(condition ? ifTrue : ifFalse)-
Der bedingte Operator gibt basierend auf dem logischen Wert der Bedingung einen von zwei Werten zurück.
Zuweisungsoperatoren
Ein Zuweisungsoperator weist seinem linken Operanden basierend auf dem Wert seines rechten Operanden einen Wert zu.
=-
Zuweisungsoperator.
*=-
Multiplikationszuweisung.
/=-
Divisionszuweisung.
%=-
Restzuweisung.
+=-
Additionszuweisung.
-=-
Subtraktionszuweisung.
<<=-
Linksverschiebungszuweisung.
>>=-
Rechtsverschiebungszuweisung.
>>>=-
Vorzeichenlose Rechtsverschiebungszuweisung.
&=-
Bitweise AND-Zuweisung.
^=-
Bitweise XOR-Zuweisung.
|=-
Bitweise OR-Zuweisung.
**=-
Potenzierungszuweisung.
&&=-
Logische AND-Zuweisung.
||=-
Logische OR-Zuweisung.
??=-
Nullish-Coalescing-Zuweisung.
[a, b] = arr,{ a, b } = obj-
Destrukturierung ermöglicht es Ihnen, die Eigenschaften eines Arrays oder Objekts mithilfe einer Syntax, die Array- oder Objektliteralen ähnelt, Variablen zuzuweisen.
Yield-Operatoren
Spread-Syntax
...obj-
Die Spread-Syntax ermöglicht es, ein iterierbares Objekt wie ein Array oder einen String an Stellen zu erweitern, an denen null oder mehr Argumente (für Funktionsaufrufe) oder Elemente (für Array-Literale) erwartet werden. In einem Objektliteral zählt die Spread-Syntax die Eigenschaften eines Objekts auf und fügt die Schlüssel-Wert-Paare dem erstellten Objekt hinzu.
Kommaoperator
,-
Der Kommaoperator ermöglicht die Auswertung mehrerer Ausdrücke in einer einzelnen Anweisung und gibt das Ergebnis des letzten Ausdrucks zurück.
Was sind Operatoren?
Wie im Abschnitt Was sind Anweisungen, Deklarationen und Ausdrücke? erklärt wird, ist ein Ausdruck ein grundlegender Baustein, der zu einem Wert ausgewertet wird. Anweisungen, Deklarationen und Ausdrücke können jeweils spezifische Positionen definieren, an denen Ausdrücke akzeptiert werden. Wenn ein Ausdruck Positionen für weitere verschachtelte Ausdrücke enthält, werden die Teile, die keine Positionen sind, als Operatoren bezeichnet.
Beispielsweise lautet die Syntax für einen Additionsausdruck expression + expression (wenn Sie die Spezifikation lesen, werden die Operanden AdditiveExpression und MultiplicativeExpression genannt, die beide Teilmengen von Expression sind; dies ist jedoch der Mechanismus der Spezifikation zur Definition von Präzedenz und Assoziativität und für unsere Zwecke nicht relevant). Abgesehen von den beiden Ausdruckspositionen ist die eingeführte Codeeinheit nur +: der Additionsoperator. Ebenso lautet die Syntax für einen [yield]-Ausdruck(/de/docs/Web/JavaScript/Reference/Operators/yield) yield expression, daher wird yield als Operator bezeichnet. Mit anderen Worten entspricht jeder Operator einem Ausdruck.
MDN betrachtet gemäà der obigen Definition auch Ausdrücke ohne Positionen wie null als Operatoren, obwohl wir sie fast immer lediglich als âSyntaxâ oder âAusdruckâ bezeichnen.
Ein Ausdruck muss keine feste Anzahl von Positionen annehmen. Beispielsweise kann der Array-Literalausdruck [expression, expression, expression] eine beliebige Anzahl von Ausdruckspositionen annehmen. Der Teil [,,] könnte als âOperatorâ bezeichnet werden. MDN vermeidet diese Verwendung, aber Sie können ihr in funktionalen Programmiersprachen wie Haskell begegnen.
Die Definition von Operatoren wird bei bestimmten anderen Codeeinheiten unschärfer: Was ist, wenn ein Ausdruck eine Position enthält, die kein Ausdruck ist, oder eine mit einem Ausdruck kombinierte Codeeinheit keinen Ausdruck ergibt? Bezeichnen wir diese Codeeinheit weiterhin als Operator?
- Im Ausdruck für optionale Verkettung
foo?.baristfooein Ausdruck, aberbarmuss ein Bezeichner sein und wird nicht zu einem Wert ausgewertet. Betrachten wir?.weiterhin als Operator? - Im Ausdruck für eine Arrow-Funktion
arg => bodykönntebodyein Ausdruck sein (obwohl es auch ein Blockrumpf sein kann), undargist lediglich eine Argumentliste. Betrachten wir=>weiterhin als Operator? - In der Spread-Syntax
...fooistfooein Ausdruck, aber das Ganze ist kein Ausdruck, weil es nicht zu einem Wert ausgewertet wird â es ist nur in bestimmten anderen Ausdrücken wie Funktionsaufrufen, Array-Literalen und Objektliteralen sinnvoll. Betrachten wir...weiterhin als Operator?
Der Begriff âOperatorâ ist in JavaScript nicht präzise definiert, daher gibt MDN keine endgültige Antwort. Unser Ansatz besteht darin, all diese Konstrukte unter âOperatorenâ zu gruppieren, jedoch zu vermeiden, sie formell als Operatoren zu bezeichnen. Viele nützliche Konzepte zu Operatoren, wie etwa die Präzedenz, gelten unabhängig von ihrer genauen Natur weiterhin für sie.