Читать книгу JavaScript – Das Handbuch für die Praxis - David Flanagan - Страница 64
Geltungsbereich von Variablen und Konstanten
ОглавлениеDer Geltungsbereich (Scope) einer Variablen ist derjenige Bereich im Quellcode Ihres Programms, in dem sie definiert ist. Variablen und Konstanten, die mit let und const deklariert werden, haben einen blockbezogenen Geltungsbereich. Das bedeutet, dass sie nur innerhalb des Codeblocks definiert sind, in dem auch die Anweisung let oder const steht. JavaScript-Klassen- und Funktionsdefinitionen sind Blöcke, ebenso die Körper von if/else-Anweisungen, von while- und for-Schleifen und so weiter. Grob gesagt: Wird eine Variable oder Konstante innerhalb eines Bereichs deklariert, der von geschweiften Klammern umschlossen ist, ist sie auch nur innerhalb dieses Bereichs definiert. (Und es ist natürlich nicht erlaubt, eine Variable oder Konstante in Codezeilen zu referenzieren, die vor der entsprechenden let- oder const-Anweisung ausgeführt werden.) Für Variablen und Konstanten, die als Teil einer for-, for/in- oder for/of-Schleife deklariert sind, stellt der Schleifenkörper den Geltungsbereich dar, auch wenn sie technisch betrachtet bereits außerhalb der geschweiften Klammern deklariert werden.
Erscheint eine Deklaration auf der obersten Ebene außerhalb von Codeblöcken, sprechen wir von globalen Variablen oder Konstanten, die entsprechend einen globalen Geltungsbereich besitzen (also quasi »überall gültig« sind). In Node und in clientseitigen JavaScript-Modulen (siehe Kapitel 10) ist der Geltungsbereich einer globalen Variablen die Datei, in der sie definiert ist. In traditionellem clientseitigem JavaScript ist der Geltungsbereich einer globalen Variablen hingegen das HTML-Dokument, in dem sie definiert ist. Das heißt praktisch: Wenn in einem <script>-Tag eine globale Variable oder Konstante deklariert wird, ist diese Variable oder Konstante in allen <script>-Elementen dieses Dokuments definiert (oder zumindest in allen Skripten, die nach der Ausführung der let- oder const-Anweisung ausgeführt werden).