Der Gültigkeitsbereich sagt, an welchen Stellen im Code ein Name bekannt ist und an welchen nicht.
- Gültigkeitsbereich
Der Teil eines Programms, in dem ein vereinbarter Name bekannt ist und benutzt werden kann.
Beispiel: „Die Variable steht innerhalb der Funktion und hat damit auch nur dort ihren Gültigkeitsbereich.“Auch: Scope, Sichtbarkeit.
Herkunft: englisch scope, der Blickbereich. Der Name sagt, von wo aus ein Name zu sehen ist.
Von innen nach außen
Wird ein Name gebraucht, sucht die Sprache ihn zuerst im innersten Block. Wird sie dort nicht fündig, geht sie eine Ebene nach außen, bis zum äußersten Bereich. Umgekehrt geht es nicht: Von außen ist nicht zu sehen, was innen vereinbart wurde.
Daraus folgt der praktische Nutzen. Zwei Funktionen können dieselben Namen benutzen, ohne einander zu stören. Je enger ein Name gefasst ist, desto weniger Code muss jemand lesen, um ihn zu verstehen.
const steuersatz = 0.19; // überall bekannt
function bruttoBerechnen(netto) {
const faktor = 1 + steuersatz; // greift nach außen
return netto * faktor;
}
// faktor; // Fehler: hier unbekanntDer globale Bereich und warum er gemieden wird
Was ganz außen vereinbart wird, ist überall bekannt und kann von überall verändert werden. In kleinen Skripten ist das bequem. Sobald mehrere Dateien zusammenkommen, wird daraus eine Quelle für Fehler, die schwer zu finden sind.
Historisch war das im Browser ein echtes Problem, weil alle Skripte sich denselben Bereich teilten. Heute lösen Module das: Was in einer Datei steht, bleibt dort, solange es nicht ausdrücklich herausgereicht wird.
Die Verbindung zur Closure
Weil eine Funktion den umgebenden Bereich sieht, behält sie ihn auch dann, wenn sie anderswo aufgerufen wird. Genau das ist die Closure, und sie wird ständig benutzt, meist ohne dass jemand den Namen denkt.