Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
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- odercontinue-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:
letconstusingawait usingfunctionfunction*async functionasync function*classexport(Hinweis: kann nur auf der obersten Ebene eines Moduls erscheinen)import(Hinweis: kann nur auf der obersten Ebene eines Moduls erscheinen)
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:
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.
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.
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.
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.
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) statementund Blockanweisungen{ statement; declaration }) - Deklarationen können Anweisungen, Deklarationen und Ausdrücke enthalten (wie
function x() { statement; declaration }undconst x = expression) - Ausdrücke können Anweisungen, Deklarationen und Ausdrücke enthalten (wie
() => { statement; declaration }undconsole.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?.
