Statements und Deklarationen

JavaScript-Anwendungen bestehen aus Anweisungen mit einer entsprechenden Syntax. Eine einzelne Anweisung kann sich über mehrere Zeilen erstrecken. Mehrere Anweisungen können in einer einzigen Zeile auftreten, wenn jede Anweisung durch ein Semikolon getrennt ist. Dies ist kein Schlüsselwort, sondern eine Gruppe von Schlüsselwörtern.

Anweisungen und Deklarationen nach Kategorie

Für ein alphabetisches Verzeichnis siehe die Seitenleiste links.

Kontrollfluss

return

Gibt den Wert an, der von einer Funktion zurückgegeben werden soll.

break

Beendet die aktuelle Schleife, den switch oder die markierte Anweisung und überträgt die Programmkontrolle auf die Anweisung, die der beendeten Anweisung folgt.

continue

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

throw

Wirft eine benutzerdefinierte Ausnahme.

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

Bewertet einen Ausdruck, vergleicht den Wert des Ausdrucks mit einer case-Klausel und führt die mit diesem Fall verbundenen Anweisungen aus.

try...catch

Markiert einen Block von Anweisungen zum Ausprobieren und gibt eine Antwort an, falls eine Ausnahme ausgelöst wird.

Variablen deklarieren

var

Deklariert eine Variable und initialisiert sie optional mit einem Wert.

let

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

const

Deklariert eine schreibgeschützte benannte Konstante.

Funktionen und Klassen

function

Deklariert eine Funktion mit den angegebenen Parametern.

function*

Generatorfunktionen ermöglichen es, Iteratoren einfacher zu schreiben.

async function

Deklariert eine asynchrone Funktion mit den angegebenen Parametern.

async function*

Asynchrone Generatorfunktionen ermöglichen es, asynchrone Iteratoren einfacher zu schreiben.

class

Deklariert eine Klasse.

Iterationen

do...while

Erstellt eine Schleife, die eine angegebene Anweisung ausführt, bis die Testbedingung falsch ist. Die Bedingung wird nach Ausführung der Anweisung ausgewertet, was dazu führt, dass die angegebene Anweisung mindestens einmal ausgeführt wird.

for

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

for...in

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

for...of

Iteriert über iterierbare Objekte (einschließlich Arrays, array-ähnliche Objekte, Iteratoren und Generatoren), indem ein benutzerdefinierter Iterationshaken aufgerufen wird, mit Anweisungen, die für den Wert jeder eindeutigen Eigenschaft ausgeführt werden.

for await...of

Iteriert über asynchrone iterierbare Objekte, array-ähnliche Objekte, Iteratoren und Generatoren, indem ein benutzerdefinierter Iterationshaken aufgerufen wird, mit Anweisungen, die für den Wert jeder eindeutigen Eigenschaft ausgeführt werden.

while

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

Andere

Empty

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

Block

Eine Blockanweisung wird verwendet, um null oder mehr Anweisungen zu gruppieren. Der Block wird durch ein Paar geschweifte Klammern begrenzt.

Expression statement

Eine Ausdrucksanweisung wertet einen Ausdruck aus und verwirft dessen Ergebnis. Sie erlaubt dem Ausdruck, Seiteneffekte zu erzeugen, wie das Ausführen einer Funktion oder das Aktualisieren einer Variablen.

debugger

Ruft eine 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, damit sie für Importe in externen Modulen und anderen Skripten verfügbar sind.

import

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

label

Bietet einer Anweisung eine Kennung, auf die Sie mit einer break- oder continue-Anweisung verweisen können.

with Veraltet

Erweiterte die Scope-Kette für eine Anweisung.

Unterschied zwischen Anweisungen und Deklarationen

In diesem Abschnitt werden wir zwei Arten von Konstrukten mischen: Anweisungen und Deklarationen. Sie sind zwei disjunkte 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 können. Beispielsweise akzeptiert der Körper in den meisten Kontrollflussstrukturen nur Anweisungen—wie die beiden Arme eines if...else:

js
if (condition)
  statement1;
else
  statement2;

Wenn man eine Deklaration anstelle einer Anweisung verwendet, wäre dies ein SyntaxError. Zum Beispiel ist eine let-Deklaration keine Anweisung, daher kann sie nicht in ihrer reinen Form als Körper einer if-Anweisung verwendet werden.

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

Andererseits ist var eine Anweisung, sodass man sie alleine als if-Körper verwenden kann.

js
if (condition)
  var i = 0;

Man kann Deklarationen als "Identifikatoren an Werte binden" sehen und Anweisungen als "Aktionen ausführen". Die Tatsache, dass var eine Anweisung anstelle einer Deklaration ist, ist ein besonderer Fall, da es den normalen lexikalischen Scoping-Regeln nicht folgt und Seiteneffekte erzeugen kann—in Form der Erstellung von globalen Variablen, der Veränderung bereits definierter var-Variablen und der Definition von Variablen, die außerhalb ihres Blocks sichtbar sind (da var-Variablen nicht block-scope-spezifisch sind).

Als weiteres Beispiel: Labels können 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 veraltete Grammatik, die es erlaubt, Funktionsdeklarationen mit Labels zu versehen, aber sie ist nur aus Gründen der Kompatibilität mit der Web-Realität standardisiert.

Um dies zu umgehen, kann man die Deklaration in geschweifte Klammern einschließen—dies macht sie zu einem Teil einer Blockanweisung.

js
label: {
  const a = 1;
}

if (condition) {
  let i = 0;
}

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch