Scope bezieht sich auf die Verfügbarkeit von Variablen und Funktionen in bestimmten Teilen des Codes.
In JavaScript hat eine Variable zwei Arten von Geltungsbereich:
- Globaler Geltungsbereich
- Lokaler Geltungsbereich
Globaler Geltungsbereich
Eine Variable, die oben in einem Programm oder außerhalb einer Funktion deklariert ist, wird als globale Bereichsvariable betrachtet.
Sehen wir uns ein Beispiel für eine globale Bereichsvariable an.
// program to print a text let a = "hello";function greet () { console.log(a);}greet(); // hello
Im obigen Programm wird die Variable a oben in einem Programm deklariert und ist eine globale Variable. Dies bedeutet, dass die Variable a
überall im Programm verwendet werden kann.
Der Wert einer globalen Variablen kann innerhalb einer Funktion geändert werden. Zum Beispiel
// program to show the change in global variablelet a = "hello";function greet() { a = 3;}// before the function callconsole.log(a);//after the function callgreet();console.log(a); // 3
Im obigen Programm ist Variable a eine globale Variable. Der Wert von a ist hello. Dann wird innerhalb einer Funktion auf die Variable a zugegriffen und der Wert ändert sich in 3.
Daher ändert sich der Wert von a, nachdem er innerhalb der Funktion geändert wurde.
Hinweis: Es empfiehlt sich, die Verwendung globaler Variablen zu vermeiden, da sich der Wert einer globalen Variablen in verschiedenen Bereichen des Programms ändern kann. Es kann unbekannte Ergebnisse in das Programm einführen.
In JavaScript kann eine Variable auch ohne Deklaration verwendet werden. Wenn eine Variable verwendet wird, ohne sie zu deklarieren, wird diese Variable automatisch zu einer globalen Variablen.
Zum Beispiel
function greet() { a = "hello"}greet();console.log(a); // hello
Im obigen Programm ist Variable a eine globale Variable.
Wenn die Variable mit let a = "hello"
deklariert wurde, würde das Programm einen Fehler ausgeben.
Hinweis: In JavaScript gibt es "strict mode";
in dem eine Variable nicht verwendet werden kann, ohne sie zu deklarieren. Um mehr über strict zu erfahren, besuchen Sie JavaScript Strict.
Lokaler Gültigkeitsbereich
Eine Variable kann auch einen lokalen Gültigkeitsbereich haben, d.h. sie kann nur innerhalb einer Funktion aufgerufen werden.
Beispiel 1: Lokale Bereichsvariable
// program showing local scope of a variablelet a = "hello";function greet() { let b = "World" console.log(a + b);}greet();console.log(a + b); // error
Ausgabe
helloWorldUncaught ReferenceError: b is not defined
Im obigen Programm ist Variable a eine globale Variable und Variable b eine lokale Variable. Auf die Variable b kann nur innerhalb der Funktion b zugegriffen werden. Wenn wir also versuchen, außerhalb der Funktion auf die Variable b zuzugreifen, tritt ein Fehler auf.
let is Block Scoped
Das let
Schlüsselwort ist block-scoped (Variable kann nur im unmittelbaren Block zugegriffen werden).
Beispiel 2: Variable mit Blockbereich
// program showing block-scoped concept// global variablelet a = 'Hello';function greet() { // local variable let b = 'World'; console.log(a + ' ' + b); if (b == 'World') { // block-scoped variable let c = 'hello'; console.log(a + ' ' + b + ' ' + c); } // variable x cannot be accessed here console.log(a + ' ' + b + ' ' + c);}greet();
Ausgabe
Hello WorldHello World helloUncaught ReferenceError: x is not defined
Im obigen Programm ist die Variable
- a eine globale Variable. Es kann überall im Programm zugegriffen werden.
- b ist eine lokale Variable. Auf sie kann nur innerhalb der Funktion
greet
zugegriffen werden. - c ist eine Variable mit Blockbereich. Auf sie kann nur innerhalb des
if
Anweisungsblocks zugegriffen werden.
Daher funktionieren im obigen Programm die ersten beiden console.log()
ohne Probleme.
Wir versuchen jedoch, auf die Blockvariable c außerhalb des Blocks im dritten console.log()
zuzugreifen. Dies wird einen Fehler auslösen.
Hinweis: In JavaScript ist var
auf Funktionen und let
auf Blöcke beschränkt. Wenn Sie versuchen, var c = 'hello';
in der Anweisung if
im obigen Programm zu verwenden, funktioniert das gesamte Programm, da c als lokale Variable behandelt wird.
Um mehr über let
versus var
Zu erfahren, besuchen Sie JavaScript let vs var.