Anweisungen und Deklarationen

JavaScript-Anwendungen bestehen aus Anweisungen mit einer geeigneten Syntax. Eine einzelne Anweisung kann mehrere Zeilen umfassen. Mehrere Anweisungen können in einer einzigen Zeile vorkommen, 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 links.

Kontrollfluss

return

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

break

Beendet die aktuelle Schleife, die Switch- oder Label-Anweisung und überträgt die Programmkontrolle zur Anweisung nach der beendeten Anweisung.

continue

Beendet die Ausführung der Anweisungen in der aktuellen Iteration der aktuellen oder gelabelten 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, der den Wert des Ausdrucks mit einer Fallklausel vergleicht 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 geworfen wird.

Variablen deklarieren

var

Deklariert eine Variable und initialisiert sie optional mit einem Wert.

let

Deklariert eine lokale Variable mit Blockscope und initialisiert sie optional mit einem Wert.

const

Deklariert eine schreibgeschützte benannte Konstante.

using

Deklariert lokale Variablen, die synchron entsorgt werden.

await using

Deklariert lokale Variablen, die asynchron entsorgt werden.

Funktionen und Klassen

function

Deklariert eine Funktion mit den angegebenen Parametern.

function*

Generatorfunktionen ermöglichen das leichteren Schreiben von Iteratoren.

async function

Deklariert eine asynchrone Funktion mit den angegebenen Parametern.

async function*

Asynchrone Generatorfunktionen erleichtern das Schreiben von asynchronen Iteratoren.

class

Deklariert eine Klasse.

Iterationen

do...while

Erstellt eine Schleife, die eine bestimmte Anweisung so lange ausführt, bis die Testbedingung zu falsch evaluiert 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 Ausdrücken besteht, welche 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 unterschiedliche Eigenschaft können Anweisungen ausgeführt werden.

for...of

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

for await...of

Iteriert über asynchrone iterierbare Objekte, array-ähnliche Objekte, Iteratoren und Generatoren und ruft einen benutzerdefinierten Iterationshaken mit Anweisungen auf, die für den Wert jeder einzelnen Eigenschaft ausgeführt werden sollen.

while

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

Andere

Leer

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 abgegrenzt.

Ausdrucksanweisung

Eine Ausdrucksanweisung wertet einen Ausdruck aus und verwirft dessen Ergebnis. Sie ermöglicht es dem Ausdruck, Nebeneffekte wie die Ausführung einer Funktion oder das Aktualisieren einer Variablen zu erzeugen.

debugger

Ruft alle verfügbaren Debugging-Funktionen auf. Wenn keine Debugging-Funktionalität verfügbar ist, hat diese Anweisung keine Auswirkungen.

export

Wird verwendet, um Funktionen zu exportieren, um sie 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.

Label

Bietet einer Anweisung eine Kennung, auf die 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 mischen wir zwei Arten von Konstrukten: 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 eine präzise Bedeutung in der formalen Syntax von JavaScript, die beeinflusst, wo sie im Code platziert werden dürfen. Zum Beispiel akzeptieren in den meisten Kontrollflussstrukturen die Körper nur Anweisungen — wie die zwei Arme 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, daher können Sie sie nicht in ihrer nackten Form als Körper 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, daher können Sie sie alleinstehend als if-Körper verwenden.

js
if (condition)
  var i = 0;

Sie können Deklarationen als "Bindungen von Bezeichnern an Werte" und Anweisungen als "Durchführung von Aktionen" ansehen. Die Tatsache, dass var eine Anweisung und keine Deklaration ist, ist ein Sonderfall, da sie nicht den normalen lexikalischen Umgebungsregeln folgt und Nebenwirkungen erzeugen kann – in Form von globalen Variablen, Mutationen bestehender var-definierten Variablen und Definitionen von Variablen, die außerhalb ihres Blocks sichtbar sind (da var-definierte Variablen nicht block-beschränkt sind).

Ein 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 Funktionsdeklarationen Labels erlaubt, aber sie ist nur zur Kompatibilität mit der Web-Realität standardisiert.

Um dies zu umgehen, können Sie 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

Siehe auch