HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
View in English Always switch to English
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Eine Blockanweisung wird verwendet, um null oder mehr Anweisungen zu gruppieren. Der Block wird durch ein Paar geschweifter Klammern begrenzt und enthält eine Liste von null oder mehr Anweisungen und Deklarationen.
var x = 1; let y = 1; if (true) { var x = 2; let y = 2; } console.log(x); // Expected output: 2 console.log(y); // Expected output: 1
{ StatementList }
StatementList
Anweisungen und Deklarationen, die innerhalb der Blockanweisung gruppiert sind.
Die Blockanweisung wird in anderen Sprachen oft als zusammengesetzte Anweisung bezeichnet. Sie ermöglicht es Ihnen, mehrere Anweisungen dort zu verwenden, wo JavaScript nur eine Anweisung erwartet. Das Kombinieren von Anweisungen zu Blöcken ist eine gängige Praxis in JavaScript, insbesondere in Verbindung mit Kontrollflussanweisungen wie if...else und for. Das entgegengesetzte Verhalten ist durch die Verwendung einer leeren Anweisung möglich, bei der Sie keine Anweisung bereitstellen, obwohl eine erforderlich ist.
if...else
for
Darüber hinaus können Blöcke in Kombination mit blockweise deklarierten Variablen wie let, const und class verhindern, dass temporäre Variablen den globalen Namensraum verschmutzen, ähnlich wie IIFEs.
let
const
class
Variablen, die mit var deklariert werden oder durch Funktionsdeklarationen im Nicht-Strict-Modus erstellt werden, haben keinen Block-Scope. Im Block eingeführte Variablen sind im Gültigkeitsbereich der enthaltenen Funktion oder des Skripts, und die Auswirkungen ihrer Zuweisung bestehen über den Block hinaus. Zum Beispiel:
var
var x = 1; { var x = 2; } console.log(x); // 2
Dies gibt 2 aus, weil die var x-Anweisung innerhalb des Blocks im gleichen Gültigkeitsbereich wie die var x-Anweisung vor dem Block liegt.
var x
In Nicht-Strict-Code verhalten sich Funktionsdeklarationen innerhalb von Blöcken merkwürdig. Verwenden Sie sie nicht.
Im Gegensatz dazu haben Bezeichner, die mit let, const und class deklariert werden, Block-Scope:
let x = 1; { let x = 2; } console.log(x); // 1
Das x = 2 ist im Gültigkeitsbereich auf den Block begrenzt, in dem es definiert wurde.
x = 2
Das Gleiche gilt für const:
const c = 1; { const c = 2; } console.log(c); // 1; does not throw SyntaxError
Beachten Sie, dass das blocklokalisierte const c = 2 keinen SyntaxError: Identifier 'c' has already been declared auslöst, da es eindeutig innerhalb des Blocks deklariert werden kann.
const c = 2
SyntaxError: Identifier 'c' has already been declared
Im Strict-Modus sind Funktionsdeklarationen innerhalb von Blöcken auf diesen Block beschränkt und werden an die Spitze des Blocks hochgehoben.
"use strict"; { foo(); // Logs "foo" function foo() { console.log("foo"); } } foo(); // ReferenceError: foo is not defined
Eine for-Schleife akzeptiert eine einzelne Anweisung als ihren Körper.
for (let i = 0; i < 10; i++) console.log(i);
Wenn Sie mehr als eine Anweisung im Schleifenkörper verwenden möchten, können Sie sie in eine Blockanweisung gruppieren:
for (let i = 0; i < 10; i++) { console.log(i); console.log(i ** 2); }
let- und const-Deklarationen sind auf den enthaltenen Block beschränkt. Dadurch können Sie Daten vor dem globalen Gültigkeitsbereich verbergen, ohne sie in eine Funktion zu kapseln.
let sector; { // These variables are scoped to this block and are not // accessible after the block const angle = Math.PI / 3; const radius = 10; sector = { radius, angle, area: (angle / 2) * radius ** 2, perimeter: 2 * radius + angle * radius, }; } console.log(sector); // { // radius: 10, // angle: 1.0471975511965976, // area: 52.35987755982988, // perimeter: 30.471975511965976 // } console.log(typeof radius); // "undefined"
using
Sie können Variablen mit using oder await using in einem Block deklarieren, was bewirkt, dass das in der Variable gespeicherte Objekt beim Verlassen des Blocks entsorgt wird. Für weitere Informationen siehe Ressourcenverwaltung.
await using
{ using reader1 = stream1.getReader(); using reader2 = stream2.getReader(); // do something with reader1 and reader2 // Before we exit the block, reader1 and reader2 are automatically released }
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
while