Anweisungen und Deklarationen
JavaScript-Code besteht aus Anweisungen und Deklarationen, die Ausdrücke enthalten können. Diese Referenz gruppiert die Konstruktionen, die zur Steuerung der Ausführung und 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 eine alphabetische Auflistung sehen Sie bitte in der Seitenleiste auf der linken Seite nach.
Kontrollfluss
return-
Gibt den Wert an, der von einer Funktion zurückgegeben werden soll.
break-
Beendet die aktuelle Schleife, den Schalter oder die beschriftete 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 beschrifteten Schleife und setzt die Ausführung 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-
Wertet einen Ausdruck aus, ordnet den Wert des Ausdrucks einer Fallklausel zu und führt die mit diesem Fall verbundenen Anweisungen aus.
try...catch-
Markiert einen Anweisungsblock zum Ausprobieren und gibt eine Antwort an, falls eine Ausnahme ausgegeben werden soll.
Variablen deklarieren
var-
Deklariert eine Variable und initialisiert sie optional mit einem Wert.
let-
Deklariert eine block-skopierte Variable und initialisiert sie optional mit einem Wert.
const-
Deklariert eine block-skopierte Variable, die nicht neu zugewiesen werden kann und muss bei der Deklaration initialisiert werden.
using-
Deklariert eine Variable wie
const, die synchron freigegeben wird. await using-
Deklariert eine Variable wie
const, die asynchron freigegeben wird.
Funktionen und Klassen
function-
Deklariert eine Funktion mit den angegebenen Parametern.
function*-
Generator-Funktionen ermöglichen das Schreiben von Iteratoren auf einfachere Weise.
async function-
Deklariert eine asynchrone Funktion mit den angegebenen Parametern.
async function*-
Asynchrone Generator-Funktionen ermöglichen das Schreiben von asynchronen Iteratoren auf einfachere Weise.
class-
Deklariert eine Klasse.
Iterationen
do...while-
Erstellt eine Schleife, die eine bestimmte Anweisung ausführt, bis die Testbedingung als falsch ausgewertet 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-
Iteriert über die aufzählbaren Eigenschaften eines Objekts in willkürlicher 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) und ruft einen benutzerdefinierten Iterations-Hook auf, um Anweisungen für den Wert jeder eindeutigen Eigenschaft auszuführen.
for await...of-
Iteriert über asynchrone iterierbare Objekte, array-ähnliche Objekte, Iteratoren und Generatoren und ruft einen benutzerdefinierten Iterations-Hook auf, um Anweisungen für den Wert jeder eindeutigen Eigenschaft auszuführen.
while-
Erstellt eine Schleife, die eine bestimmte Anweisung ausführt, solange die Testbedingung als wahr ausgewertet wird. Die Bedingung wird vor der Ausführung der Anweisung ausgewertet.
Sonstige
- Empty
-
Eine leere Anweisung wird verwendet, um keine Anweisung bereitzustellen, obwohl die JavaScript-Syntax eine erwarten würde.
- Block
-
Eine Block-Anweisung wird verwendet, um null oder mehr Anweisungen zu gruppieren. Der Block wird durch ein Paar geschweifter Klammern begrenzt.
- Ausdrucksanweisung
-
Eine Ausdrucksanweisung wertet einen Ausdruck aus und verwirft ihr Ergebnis. Sie ermöglicht es dem Ausdruck, Nebeneffekte hervorzurufen, wie z.B. eine Funktion auszuführen oder eine Variable zu aktualisieren.
debugger-
Ruft alle verfügbaren Debugging-Funktionen auf. Wenn keine Debugging-Funktion verfügbar ist, hat diese Anweisung keine Auswirkung.
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 aus einem externen Modul, einem anderen Skript exportiert wurden.
- label
-
Versehen Sie eine Anweisung mit einem Identifikator, den Sie mit einer
break- odercontinue-Anweisung referenzieren können. with-
Erweitert die Scope-Kette für eine Anweisung.
Was sind Anweisungen, Deklarationen und Ausdrücke?
Alle JavaScript-Programme bestehen aus einer Sequenz von Top-Level-Konstruktionen, die eine der oben aufgeführten Syntaxe verwenden. Diese sind bekannt als Anweisungen und Deklarationen. In den MDN-Dokumenten sprechen wir oft umgangssprachlich von beiden als Anweisungen, aber sie sind technisch gesehen zwei disjunkte Mengen von Grammatiken.
Die folgenden sind Deklarationen:
letconstusingawait usingfunctionfunction*async functionasync function*classexport(Hinweis: es kann nur auf der Top-Ebene eines Moduls erscheinen)import(Hinweis: es kann nur auf der Top-Ebene eines Moduls erscheinen)
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 können. Zum Beispiel akzeptieren in den meisten Kontrollflussstrukturen nur die Körper 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, Sie können sie also nicht in ihrer nackten Form als den Körper einer if-Anweisung verwenden.
if (condition)
let i = 0; // SyntaxError: Lexical declaration cannot appear in a single-statement context
Auf der anderen Seite ist var eine Anweisung, also können Sie sie eigenständig als if-Körper verwenden.
if (condition)
var i = 0;
Sie können Deklarationen sehen als "Bindung von Bezeichnern an Werte" und Anweisungen als "Durchführung von Aktionen". Die Tatsache, dass var eine Anweisung und keine Deklaration ist, ist ein Sonderfall, da sie nicht den normalen lexikalischen Bereichsregeln folgt und Nebenwirkungen verursachen kann — in Form von Erstellen globaler Variablen, Ändern bestehender var-definierter Variablen und Definieren von Variablen, die außerhalb ihres Blocks sichtbar sind (da var-definierte Variablen nicht block-skopiert sind).
Als weiteres Beispiel können Labels nur an Anweisungen angehängt werden.
label: const a = 1; // SyntaxError: Lexical declaration cannot appear in a single-statement context
Hinweis: Es gibt eine veraltete Grammatik, die es erlaubt, Funktionendeklarationen Labels zuzuweisen, aber sie ist nur für die Kompatibilität mit der Realität des Webs standardisiert.
Um dies zu umgehen, können Sie die Deklaration in geschweifte Klammern setzen — dies macht sie zu einem Bestandteil einer Block-Anweisung.
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 durch eval()). Ihr Zweck ist es, die umgebende Umgebung zu manipulieren und Nebeneffekte zu erzeugen — variable Bindungen zu erstellen, Dinge auszugeben, Variablenwerte zu ändern usw. Die Werte, die sie verwenden, stammen aus der Auswertung von Ausdrücken.
Ausdrücke sind keine Top-Level-Konstrukte; sie können nur in spezifischen Slots innerhalb von Anweisungen und Deklarationen verwendet werden, wie if (Ausdruck), const x = Ausdruck usw. Die Ausdrucksanweisung-Syntax erlaubt es den meisten Ausdrücken, als Anweisungen verwendet zu werden, aber das ist nur eine Anweisung mit einem einzigen Ausdrucks-Slot.
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 Block-Anweisungen{ 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 für jedes Syntaxelement beschreiben wir alle seine "Slots" und geben an, ob jeder Slot eine Anweisung, Deklaration oder ein Ausdruck ist.
Operatoren sind ein weiteres wichtiges Konzept in der JavaScript-Grammatik, aber sie funktionieren nicht wie Bausteine. Lesen Sie Was sind Operatoren? für weitere Informationen.