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
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
- odercontinue
-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:
let
const
function
function*
async function
async function*
class
export
(Hinweis: Es kann nur auf der oberen Ebene eines Moduls erscheinen)import
(Hinweis: Es kann nur auf der oberen Ebene eines Moduls erscheinen)
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
:
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.
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.
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.
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.
label: {
const a = 1;
}
if (condition) {
let i = 0;
}