Anweisungen und Deklarationen - JavaScript | MDN

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. Dieses Referenzdokument 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

Für ein alphabetisches Verzeichnis siehe die Seitenleiste links.

Steuerungsfluss

return

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

break

Beendet die aktuelle Schleife, das aktuelle switch oder die aktuelle label-Anweisung und überträgt die Programmausführung auf die Anweisung nach der beendeten Anweisung.

continue

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

switch

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

try...catch

Kennzeichnet einen Block von Anweisungen, die ausprobiert werden sollen, und gibt an, wie darauf reagiert werden soll, falls eine Ausnahme ausgelöst wird.

Variablen deklarieren

var

Deklariert eine Variable und initialisiert sie optional mit einem Wert.

let

Deklariert eine lokale Blockscope-Variable 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 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 als falsch bewertet wird. Die Bedingung wird nach der Ausführung der Anweisung ausgewertet, wodurch die spezifizierte 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

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

for...of

Durchläuft iterierbare 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 einzelnen Eigenschaft ausgeführt werden sollen.

for await...of

Durchläuft asynchrone iterierbare Objekte, array-ähnliche Objekte, Iteratoren und Generatoren, wobei ein benutzerdefinierter Iterations-Hook mit Anweisungen aufgerufen wird, die für den Wert jeder einzelnen Eigenschaft ausgeführt werden sollen.

while

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

Sonstige

Leere Anweisung

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.

Ausdrucks-Anweisung

Eine Ausdrucks-Anweisung wertet einen Ausdruck aus und verwirft dessen Ergebnis. Sie erlaubt dem Ausdruck, Seiteneffekte zu bewirken, wie z. B. das Ausführen einer Funktion oder das Aktualisieren einer Variablen.

debugger

Ruft alle verfügbaren Debugging-Funktionen auf. Wenn keine Debugging-Funktion verfügbar ist, hat diese Anweisung keine Wirkung.

export

Wird verwendet, um Funktionen zu exportieren, damit sie in externen Modulen und anderen Skripten importiert werden können.

import

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

label

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

with

Erweitert die Gültigkeitsbereichskette für eine Anweisung.

Was sind Anweisungen, Deklarationen und Ausdrücke?

Alle JavaScript-Programme bestehen aus einer Abfolge von obersten Konstrukten, die eine der oben genannten Syntaxen verwenden. Diese sind als Anweisungen und Deklarationen bekannt. In den MDN-Dokumentationen beziehen wir uns häufig kolloquial auf beide als Anweisungen, aber technisch gesehen sind es zwei getrennte Mengen von Grammatiken.

Die folgenden sind Deklarationen:

Alles andere in der obigen Liste ist eine Anweisung.

Die Begriffe "Anweisung" und "Deklaration" haben eine genaue Bedeutung in der formalen Syntax von JavaScript, die beeinflusst, wo sie im Code platziert werden können. Zum Beispiel akzeptiert der Körper in den meisten Kontrollflussstrukturen nur Anweisungen — wie die beiden Arme eines if...else:

js
if (condition)
  statement1;
else
  statement2;

Wenn Sie eine Deklaration anstelle einer Anweisung verwenden, würde dies zu einem SyntaxError führen. Zum Beispiel ist eine let-Deklaration keine Anweisung, daher können Sie sie nicht in ihrer reinen 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, sodass Sie sie alleine als if-Körper verwenden können.

js
if (condition)
  var i = 0;

Sie können Deklarationen als "Binden von Bezeichnern an Werte" betrachten und Anweisungen als "Durchführen von Aktionen". Die Tatsache, dass var eine Anweisung und keine Deklaration ist, ist ein Sonderfall, da es nicht den normalen lexikalischen Gültigkeitsbereichsregeln folgt und Seiteneffekte erzeugen kann — in Form von globalen Variablen, die mit var definiert wurden, und Variablen, die außerhalb ihres Blocks sichtbar sind (weil mit var definierte Variablen nicht block-scope sind).

Ein weiteres Beispiel: Labels können nur an Anweisungen angefügt werden.

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

Hinweis: Es gibt ein Legacy-Grammatik, das Funktionsdeklarationen Labels zuweist, aber es ist nur aus Gründen der Kompatibilität mit der Web-Realität standardisiert.

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

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 ist es, die Umgebung zu manipulieren und Seiteneffekte zu erzeugen—Variablenbindungen zu erstellen, Dinge auszugeben, Variablenwerte zu ändern, etc. Die Werte, die sie verwenden, stammen aus der Auswertung von Ausdrücken.

Ausdrücke sind keine obersten Konstrukte; sie können nur in bestimmten Slots innerhalb von Anweisungen und Deklarationen verwendet werden, wie z. B. if (expression), const x = expression, etc. Die Ausdrucks-Anweisung-Syntax erlaubt es, die meisten Ausdrücke als Anweisungen zu verwenden, aber das ist nur eine Anweisung mit einem einzigen Ausdrucksslot.

Sie können JavaScript-Syntaxstrukturen nur mit Anweisungen, Deklarationen und Ausdrücken abbilden:

  • Anweisungen können Anweisungen, Deklarationen und Ausdrücke enthalten (wie if (expression) statement und Blockanweisungen { 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 zu jedem Syntaxelement beschreiben wir alle seine "Slots" und sagen, ob jeder Slot eine Anweisung, eine Deklaration oder ein Ausdruck ist.

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

Browser-Kompatibilität

Siehe auch