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

View in English Always switch to English

Anweisungen und Deklarationen

JavaScript-Code besteht aus Anweisungen und Deklarationen, die Ausdrücke enthalten können. Diese Referenz gruppiert die Konstrukte, die zur Steuerung der Ausführung und zur Deklaration von Bindungen verwendet werden. Eine Anweisung kann sich über mehrere Zeilen erstrecken, und eine Zeile kann mehrere Anweisungen enthalten.

Anweisungen und Deklarationen nach Kategorie

Eine alphabetische Auflistung finden Sie in der Seitenleiste auf der linken Seite.

Kontrollfluss

return

Gibt den von einer Funktion zurückzugebenden Wert an.

break

Beendet die aktuelle Schleife, switch- oder Label-Anweisung und überträgt die Programmsteuerung auf die Anweisung, die der beendeten Anweisung folgt.

continue

Beendet die Ausführung der Anweisungen in der aktuellen Iteration der aktuellen oder mit einem Label versehenen Schleife und setzt die Ausführung der Schleife mit der nächsten Iteration fort.

throw

Löst eine benutzerdefinierte Ausnahme aus.

if...else

Führt eine Anweisung aus, wenn eine angegebene Bedingung wahr ist. Wenn die Bedingung falsch ist, kann eine andere Anweisung ausgeführt werden.

switch

Wertet einen Ausdruck aus, gleicht den Wert des Ausdrucks mit einer case-Klausel ab und führt Anweisungen aus, die diesem Fall zugeordnet sind.

try...catch

Markiert einen Block von Anweisungen, die versucht werden sollen, und legt eine Reaktion fest, falls eine Ausnahme ausgelöst wird.

Variablen deklarieren

var

Deklariert eine Variable und initialisiert sie optional mit einem Wert.

let

Deklariert eine Variable mit Block-Scope und initialisiert sie optional mit einem Wert.

const

Deklariert eine Variable mit Block-Scope, die nicht erneut zugewiesen werden kann und bei der Deklaration initialisiert werden muss.

using

Deklariert eine Variable wie const, die synchron freigegeben wird.

await using

Deklariert eine Variable wie const, die asynchron freigegeben wird.

Funktionen und Klassen

function

Deklariert eine Funktion mit den angegebenen Parametern.

function*

Generatorfunktionen erleichtern das Schreiben von Iteratoren.

async function

Deklariert eine asynchrone Funktion mit den angegebenen Parametern.

async function*

Asynchrone Generatorfunktionen erleichtern das Schreiben asynchroner Iteratoren.

class

Deklariert eine Klasse.

Iterationen

do...while

Erstellt eine Schleife, die eine angegebene Anweisung ausführt, bis die Testbedingung zu false ausgewertet wird. Die Bedingung wird nach der Ausführung der Anweisung ausgewertet, wodurch die angegebene Anweisung mindestens einmal ausgeführt wird.

for

Erstellt eine Schleife, die aus drei optionalen, in Klammern eingeschlossenen und durch Semikolons getrennten Ausdrücken besteht, gefolgt von einer Anweisung, die in der Schleife ausgeführt wird.

for...in

Iteriert in beliebiger Reihenfolge über die aufzählbaren Eigenschaften eines Objekts. Für jede unterschiedliche Eigenschaft können Anweisungen ausgeführt werden.

for...of

Iteriert über iterierbare Objekte (einschließlich Arrays, array-ähnlicher Objekte, Iteratoren und Generatoren) und ruft einen benutzerdefinierten Iterations-Hook mit Anweisungen auf, die für den Wert jeder unterschiedlichen Eigenschaft ausgeführt werden.

for await...of

Iteriert über asynchron iterierbare Objekte, array-ähnliche Objekte, Iteratoren und Generatoren und ruft einen benutzerdefinierten Iterations-Hook mit Anweisungen auf, die für den Wert jeder unterschiedlichen Eigenschaft ausgeführt werden.

while

Erstellt eine Schleife, die eine angegebene Anweisung ausführt, solange die Testbedingung zu true ausgewertet wird. Die Bedingung wird vor der Ausführung der Anweisung ausgewertet.

Sonstige

Empty

Eine leere Anweisung wird verwendet, um keine Anweisung bereitzustellen, obwohl die JavaScript-Syntax eine erwartet.

Block

Eine Block-Anweisung wird verwendet, um null oder mehr Anweisungen zu gruppieren. Der Block wird durch ein Paar geschweifter Klammern begrenzt.

Expression statement

Eine Ausdrucksanweisung wertet einen Ausdruck aus und verwirft dessen Ergebnis. Sie ermöglicht es dem Ausdruck, Nebeneffekte auszuführen, etwa eine Funktion aufzurufen oder eine Variable zu aktualisieren.

debugger

Ruft jede verfügbare Debugging-Funktionalität auf. Wenn keine Debugging-Funktionalität verfügbar ist, hat diese Anweisung keine Wirkung.

export

Wird verwendet, um Funktionen zu exportieren und sie für Importe in externen Modulen und anderen Skripten verfügbar zu machen.

import

Wird verwendet, um Funktionen zu importieren, die aus einem externen Modul oder einem anderen Skript exportiert wurden.

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.

label

Versehen eine Anweisung mit einem Bezeichner, auf den Sie mit einer break- oder continue-Anweisung verweisen können.

with

Erweitert die Scope-Kette für eine Anweisung.

Was sind Anweisungen, Deklarationen und Ausdrücke?

Alle JavaScript-Programme bestehen aus einer Sequenz von Konstrukten auf oberster Ebene, die eine der oben aufgeführten Syntaxformen verwenden. Diese werden als Anweisungen und Deklarationen bezeichnet. In der MDN-Dokumentation bezeichnen wir beide umgangssprachlich häufig als Anweisungen, technisch gesehen sind sie jedoch zwei getrennte Mengen von Grammatiken.

Die folgenden sind Deklarationen:

Alles andere in der obigen Liste ist eine Anweisung.

Die Begriffe „Anweisung“ und „Deklaration“ haben in der formalen Syntax von JavaScript eine präzise Bedeutung, die beeinflusst, wo sie im Code platziert werden dürfen. Beispielsweise akzeptiert der Body in den meisten Kontrollflussstrukturen nur Anweisungen – etwa die beiden Zweige eines if...else:

js
if (condition)
  statement1;
else
  statement2;

Wenn Sie statt einer Anweisung eine Deklaration verwenden, wäre dies ein SyntaxError. Beispielsweise ist eine let-Deklaration keine Anweisung, daher können Sie sie nicht in ihrer eigenständigen Form als Body einer if-Anweisung verwenden.

js
if (condition)
  let i = 0; // SyntaxError: Lexical declaration cannot appear in a single-statement context

Andererseits ist var eine Anweisung, sodass Sie es allein als if-Body verwenden können.

js
if (condition)
  var i = 0;

Sie können Deklarationen als „Bindung von Bezeichnern an Werte“ und Anweisungen als „Ausführen von Aktionen“ betrachten. Die Tatsache, dass var eine Anweisung statt einer Deklaration ist, stellt einen Sonderfall dar, da es nicht den normalen Regeln des lexikalischen Scope folgt und Nebeneffekte erzeugen kann – in Form des Erstellens globaler Variablen, des Veränderns vorhandener mit var definierter Variablen und des Definierens von Variablen, die außerhalb ihres Blocks sichtbar sind (weil mit var definierte Variablen keinen Block-Scope haben).

Als weiteres Beispiel können Labels nur an Anweisungen angehängt werden.

js
label: const a = 1; // SyntaxError: Lexical declaration cannot appear in a single-statement context

Hinweis: Es gibt eine Legacy-Grammatik, die Funktionsdeklarationen Labels erlaubt, sie ist jedoch nur aus Gründen der Kompatibilität mit der Realität des Webs standardisiert.

Um dies zu umgehen, können Sie die Deklaration in geschweifte Klammern einschließen – dadurch wird sie Teil einer Block-Anweisung.

js
label: {
  const a = 1;
}

if (condition) {
  let i = 0;
}

In JavaScript erzeugen Anweisungen und Deklarationen Werte, aber diese Werte sind fast nie beobachtbar (außer bei eval()). Ihr Zweck besteht darin, die umgebende Umgebung zu manipulieren und Nebeneffekte zu erzeugen – Variablenbindungen zu erstellen, Dinge auszugeben, Variablenwerte zu ändern usw. Die von ihnen verwendeten Werte stammen aus der Auswertung von Ausdrücken.

Ausdrücke sind keine Konstrukte auf oberster Ebene; sie können nur in bestimmten Slots innerhalb von Anweisungen und Deklarationen verwendet werden, etwa if (expression), const x = expression usw. Die Syntax der Ausdrucksanweisung ermöglicht es, die meisten Ausdrücke als Anweisungen zu verwenden, aber dies ist lediglich eine Anweisung mit einem einzelnen Ausdrucks-Slot.

Sie können die JavaScript-Syntaxstrukturen allein mithilfe von Anweisungen, Deklarationen und Ausdrücken abbilden:

  • Anweisungen können Anweisungen, Deklarationen und Ausdrücke enthalten (wie if (expression) statement und Block-Anweisungen { statement; declaration })
  • Deklarationen können Anweisungen, Deklarationen und Ausdrücke enthalten (wie function x() { statement; declaration } und const x = expression)
  • Ausdrücke können Anweisungen, Deklarationen und Ausdrücke enthalten (wie () => { statement; declaration } und console.log(expression))

In der Referenzdokumentation für jeden Teil der Syntax beschreiben wir alle seine „Slots“ und geben an, ob jeder Slot eine Anweisung, Deklaration oder ein Ausdruck ist.

Operatoren sind ein weiteres wichtiges Konzept in der JavaScript-Grammatik, funktionieren jedoch nicht wie Bausteine. Weitere Informationen finden Sie unter Was sind Operatoren?.

Browser-Kompatibilität

Siehe auch