Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 this verweist 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 function definiert einen Funktionsausdruck.

class

Das Schlüsselwort class definiert einen Klassenausdruck.

function*

Das Schlüsselwort function* definiert einen Generatorfunktionsausdruck.

async function

async function definiert 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.property und object["property"]).

?.

Der optionale Verkettungsoperator gibt undefined zurück, anstatt einen Fehler zu verursachen, wenn eine Referenz nullish (null oder undefined) ist.

new

Der Operator new erstellt eine Instanz eines Konstruktors.

new.target

In Konstruktoren verweist new.target auf den Konstruktor, der durch new aufgerufen wurde.

import.meta

Ein Objekt, das kontextspezifische Metadaten für ein JavaScript-Modul bereitstellt.

super

Das Schlüsselwort super ruft 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.

A++

Postfix-Inkrementierungsoperator.

A--

Postfix-Dekrementierungsoperator.

++A

Präfix-Inkrementierungsoperator.

--A

Präfix-Dekrementierungsoperator.

Unäre Operatoren

Eine unäre Operation ist eine Operation mit nur einem Operanden.

delete

Der Operator delete löscht eine Eigenschaft aus einem Objekt.

void

Der Operator void wertet einen Ausdruck aus und verwirft seinen Rückgabewert.

typeof

Der Operator typeof bestimmt 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.

**

Potenzierungsoperator.

*

Multiplikationsoperator.

/

Divisionsoperator.

%

Restoperator.

+ (Plus)

Additionsoperator.

-

Subtraktionsoperator.

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 instanceof bestimmt, ob ein Objekt eine Instanz eines anderen Objekts ist.

in

Der Operator in bestimmt, 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.

==

Gleichheitsoperator.

!=

Ungleichheitsoperator.

===

Strikter Gleichheitsoperator.

!==

Strikter Ungleichheitsoperator.

Bitweise Verschiebungsoperatoren

Operationen zum Verschieben aller Bits des Operanden.

<<

Bitweiser Linksverschiebungsoperator.

>>

Bitweiser Rechtsverschiebungsoperator.

>>>

Bitweiser vorzeichenloser Rechtsverschiebungsoperator.

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.

&

Bitweises AND.

|

Bitweises OR.

^

Bitweises XOR.

Binäre logische Operatoren

Logische Operatoren implementieren boolesche (logische) Werte und weisen Kurzschlussverhalten auf.

&&

Logisches AND.

||

Logisches OR.

??

Nullish-Coalescing-Operator.

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

yield

Hält eine Generatorfunktion an und setzt sie fort.

yield*

Delegiert an eine andere Generatorfunktion oder ein iterierbares Objekt.

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?.bar ist foo ein Ausdruck, aber bar muss ein Bezeichner sein und wird nicht zu einem Wert ausgewertet. Betrachten wir ?. weiterhin als Operator?
  • Im Ausdruck für eine Arrow-Funktion arg => body könnte body ein Ausdruck sein (obwohl es auch ein Blockrumpf sein kann), und arg ist lediglich eine Argumentliste. Betrachten wir => weiterhin als Operator?
  • In der Spread-Syntax ...foo ist foo ein 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.

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-equality-operators
ECMAScript® 2027 Language Specification
# sec-assignment-operators
ECMAScript® 2027 Language Specification
# sec-bitwise-not-operator
ECMAScript® 2027 Language Specification
# sec-function-definitions
ECMAScript® 2027 Language Specification
# sec-import-calls
ECMAScript® 2027 Language Specification
# sec-async-generator-function-definitions
ECMAScript® 2027 Language Specification
# sec-grouping-operator
ECMAScript® 2027 Language Specification
# sec-multiplicative-operators
ECMAScript® 2027 Language Specification
# sec-null-value
ECMAScript® 2027 Language Specification
# sec-relational-operators
ECMAScript® 2027 Language Specification
# sec-left-shift-operator
ECMAScript® 2027 Language Specification
# prod-LogicalANDExpression
ECMAScript® 2027 Language Specification
# sec-signed-right-shift-operator
ECMAScript® 2027 Language Specification
# sec-addition-operator-plus
ECMAScript® 2027 Language Specification
# sec-logical-not-operator
ECMAScript® 2027 Language Specification
# prod-ComputedPropertyName
ECMAScript® 2027 Language Specification
# sec-subtraction-operator-minus
ECMAScript® 2027 Language Specification
# prod-SpreadElement
ECMAScript® 2027 Language Specification
# prod-ImportMeta
ECMAScript® 2027 Language Specification
# prod-AssignmentRestProperty
ECMAScript® 2027 Language Specification
# prod-PropertyDefinition
ECMAScript® 2027 Language Specification
# sec-property-accessors
ECMAScript® 2027 Language Specification
# prod-BitwiseORExpression
ECMAScript® 2027 Language Specification
# sec-generator-function-definitions-runtime-semantics-evaluation
ECMAScript® 2027 Language Specification
# prod-AssignmentRestElement
ECMAScript® 2027 Language Specification
# sec-typeof-operator
ECMAScript® 2027 Language Specification
# sec-destructuring-assignment
ECMAScript® 2027 Language Specification
# sec-destructuring-binding-patterns
ECMAScript® 2027 Language Specification
# prod-OptionalExpression
ECMAScript® 2027 Language Specification
# prod-FormalParameters
ECMAScript® 2027 Language Specification
# prod-CoalesceExpression
ECMAScript® 2027 Language Specification
# sec-void-operator
ECMAScript® 2027 Language Specification
# sec-generator-function-definitions
ECMAScript® 2027 Language Specification
# sec-unsigned-right-shift-operator
ECMAScript® 2027 Language Specification
# sec-class-definitions
ECMAScript® 2027 Language Specification
# prod-BitwiseANDExpression
ECMAScript® 2027 Language Specification
# sec-exp-operator
ECMAScript® 2027 Language Specification
# prod-LogicalORExpression
ECMAScript® 2027 Language Specification
# sec-async-function-definitions
ECMAScript® 2027 Language Specification
# sec-object-initializer
ECMAScript® 2027 Language Specification
# prod-ArgumentList
ECMAScript® 2027 Language Specification
# prod-YieldExpression
ECMAScript® 2027 Language Specification
# sec-built-in-function-objects
ECMAScript® 2027 Language Specification
# sec-delete-operator
ECMAScript® 2027 Language Specification
# sec-comma-operator
ECMAScript® 2027 Language Specification
# sec-this-keyword
ECMAScript® 2027 Language Specification
# sec-unary-minus-operator
ECMAScript® 2027 Language Specification
# sec-conditional-operator
ECMAScript® 2027 Language Specification
# sec-postfix-increment-operator
ECMAScript® 2027 Language Specification
# sec-super-keyword
ECMAScript® 2027 Language Specification
# sec-new-operator
ECMAScript® 2027 Language Specification
# sec-postfix-decrement-operator
ECMAScript® 2027 Language Specification
# prod-MethodDefinition
ECMAScript® 2027 Language Specification
# prod-BitwiseXORExpression
ECMAScript® 2027 Language Specification
# sec-unary-plus-operator
HTML
# integration-with-the-javascript-module-system
HTML
# import-meta-resolve

Browser-Kompatibilität

Siehe auch