Anweisungen 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 eine alphabetische Auflistung siehe die Seitenleiste auf der linken Seite.

Kontrollfluss

return

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

break

Beendet die aktuelle Schleife, den aktuellen Switch oder die aktuelle Label-Anweisung und überträgt die Steuerung des Programms auf die Anweisung nach der beendeten Anweisung.

continue

Beendet die Ausführung der Anweisungen in der aktuellen Iteration der aktuellen oder beschrifteten 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 bestimmte Bedingung wahr ist. Wenn die Bedingung falsch ist, kann eine andere Anweisung ausgeführt werden.

switch

Bewertet einen Ausdruck, stimmt den Wert des Ausdrucks mit einer Fallklausel überein 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-Lokalvariable 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 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 bestimmte Anweisung ausführt, bis die Testbedingung als falsch bewertet wird. Die Bedingung wird nach der Ausführung der Anweisung bewertet, 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 in der Schleife ausgeführten Anweisung.

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 iterable Objekte (einschließlich arrays, array-ähnliche Objekte, Iteratoren und Generatoren), wobei ein benutzerdefinierter Iterations-Hook mit Anweisungen aufgerufen wird, die für den Wert jeder eindeutigen Eigenschaft auszuführen sind.

for await...of

Iteriert über asynchrone iterierbare Objekte, array-ähnliche Objekte, Iteratoren und Generatoren, wobei ein benutzerdefinierter Iterations-Hook mit Anweisungen aufgerufen wird, die für den Wert jeder eindeutigen Eigenschaft auszuführen sind.

while

Erstellt eine Schleife, die eine bestimmte Anweisung ausführt, solange die Testbedingung als wahr bewertet wird. Die Bedingung wird vor der Ausführung der Anweisung bewertet.

Andere

Empty

Eine leere Anweisung wird verwendet, um keine Anweisung bereitzustellen, obwohl die JavaScript-Syntax eine erwarten würde.

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 sein Ergebnis. Sie ermöglicht es dem Ausdruck, Nebenwirkungen auszuführen, wie zum Beispiel eine Funktion auszuführen oder eine Variable zu aktualisieren.

debugger

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

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, einem anderen Skript exportiert wurden.

label

Bietet einer Anweisung einen Bezeichner, auf den Sie mit einer break- oder continue-Anweisung verweisen können.

with Veraltet

Erweitert 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 im formalen Syntax von JavaScript eine präzise Bedeutung, die beeinflusst, wo sie im Code platziert werden dürfen. Zum Beispiel akzeptiert der Körper in den meisten Kontrollflussstrukturen nur Anweisungen — wie die beiden Zweige eines if...else:

js
if (condition)
  statement1;
else
  statement2;

Wenn Sie eine Deklaration anstelle einer Anweisung verwenden, wäre es ein SyntaxError. Zum Beispiel ist eine let-Deklaration keine Anweisung, sodass Sie sie nicht in ihrer nackten Form als Körper einer if-Anweisung verwenden können.

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

Andererseits ist var eine Anweisung, sodass Sie es eigenständig als if-Körper verwenden können.

js
if (condition)
  var i = 0;

Sie können Deklarationen als "Binden von Identifiers an Werte" und Anweisungen als "Durchführen von Aktionen" sehen. Die Tatsache, dass var eine Anweisung anstelle einer Deklaration ist, ist ein Sonderfall, da es nicht den normalen Regeln der lexikalischen Sichtbarkeit folgt und Nebenwirkungen haben kann — in Form von globalen Variablen, die es erstellt, sowie vorhandenen var-definierten Variablen, die es verändert, sowie Variablen, die es definiert und die außerhalb seines Blocks sichtbar sind (da var-definierte Variablen nicht Block-scope sind).

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 veraltete Syntax, die es erlaubt, Funktionsdeklarationen Labels zuzuweisen, aber sie ist nur standardisiert, um mit der Web-Realität kompatibel zu sein.

Um dies zu umgehen, können Sie die Deklaration in geschweifte Klammern setzen — dies macht sie zu einem Teil einer Blockanweisung.

js
label: {
  const a = 1;
}

if (condition) {
  let i = 0;
}

Browser-Kompatibilität

Siehe auch