Statements 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 ein alphabetisches Verzeichnis siehe die Seitenleiste links.
Kontrollfluss
return
-
Gibt den Wert an, der von einer Funktion zurückgegeben werden soll.
break
-
Beendet die aktuelle Schleife, den
switch
oder die markierte 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 markierten 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, vergleicht den Wert des Ausdrucks mit einer
case
-Klausel 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 ermöglichen es, Iteratoren einfacher zu schreiben.
async function
-
Deklariert eine asynchrone Funktion mit den angegebenen Parametern.
async function*
-
Asynchrone Generatorfunktionen ermöglichen es, asynchrone Iteratoren einfacher zu schreiben.
class
-
Deklariert eine Klasse.
Iterationen
do...while
-
Erstellt eine Schleife, die eine angegebene Anweisung ausführt, bis die Testbedingung falsch ist. Die Bedingung wird nach Ausführung der Anweisung ausgewertet, 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 Anweisung, die in der Schleife ausgeführt wird.
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 iterierbare Objekte (einschließlich Arrays, array-ähnliche Objekte, Iteratoren und Generatoren), indem ein benutzerdefinierter Iterationshaken aufgerufen wird, mit Anweisungen, die für den Wert jeder eindeutigen Eigenschaft ausgeführt werden.
for await...of
-
Iteriert über asynchrone iterierbare Objekte, array-ähnliche Objekte, Iteratoren und Generatoren, indem ein benutzerdefinierter Iterationshaken aufgerufen wird, mit Anweisungen, die für den Wert jeder eindeutigen Eigenschaft ausgeführt werden.
while
-
Erstellt eine Schleife, die eine angegebene Anweisung ausführt, solange die Testbedingung wahr ist. Die Bedingung wird vor der Ausführung der Anweisung ausgewertet.
Andere
- Empty
-
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.
- Expression statement
-
Eine Ausdrucksanweisung wertet einen Ausdruck aus und verwirft dessen Ergebnis. Sie erlaubt dem Ausdruck, Seiteneffekte zu erzeugen, wie das Ausführen einer Funktion oder das Aktualisieren einer Variablen.
debugger
-
Ruft eine verfügbare Debugging-Funktionalität auf. Wenn keine Debugging-Funktionalität verfügbar ist, hat diese Anweisung keine Wirkung.
export
-
Wird verwendet, um Funktionen zu exportieren, damit sie für Importe in externen Modulen und anderen Skripten verfügbar sind.
import
-
Wird verwendet, um Funktionen zu importieren, die aus einem externen Modul, einem anderen Skript, exportiert wurden.
- label
-
Bietet einer Anweisung eine Kennung, auf die Sie mit einer
break
- odercontinue
-Anweisung verweisen können. with
Veraltet-
Erweiterte 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 obersten Ebene eines Moduls erscheinen)import
(Hinweis: es kann nur auf der obersten Ebene eines Moduls erscheinen)
Alles andere in der obigen Liste ist eine Anweisung.
Die Begriffe "Anweisung" und "Deklaration" haben in der formalen Syntax von JavaScript eine präzise Bedeutung, die beeinflusst, wo sie im Code platziert werden können. Beispielsweise akzeptiert der Körper in den meisten Kontrollflussstrukturen nur Anweisungen—wie die beiden Arme eines if...else
:
if (condition)
statement1;
else
statement2;
Wenn man eine Deklaration anstelle einer Anweisung verwendet, wäre dies ein SyntaxError
. Zum Beispiel ist eine let
-Deklaration keine Anweisung, daher kann sie nicht in ihrer reinen Form als Körper einer if
-Anweisung verwendet werden.
if (condition)
let i = 0; // SyntaxError: Lexical declaration cannot appear in a single-statement context
Andererseits ist var
eine Anweisung, sodass man sie alleine als if
-Körper verwenden kann.
if (condition)
var i = 0;
Man kann Deklarationen als "Identifikatoren an Werte binden" sehen und Anweisungen als "Aktionen ausführen". Die Tatsache, dass var
eine Anweisung anstelle einer Deklaration ist, ist ein besonderer Fall, da es den normalen lexikalischen Scoping-Regeln nicht folgt und Seiteneffekte erzeugen kann—in Form der Erstellung von globalen Variablen, der Veränderung bereits definierter var
-Variablen und der Definition von Variablen, die außerhalb ihres Blocks sichtbar sind (da var
-Variablen nicht block-scope-spezifisch sind).
Als weiteres Beispiel: Labels können 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, Funktionsdeklarationen mit Labels zu versehen, aber sie ist nur aus Gründen der Kompatibilität mit der Web-Realität standardisiert.
Um dies zu umgehen, kann man die Deklaration in geschweifte Klammern einschließen—dies macht sie zu einem Teil einer Blockanweisung.
label: {
const a = 1;
}
if (condition) {
let i = 0;
}
Browser-Kompatibilität
BCD tables only load in the browser