Junior
Was ist der Unterschied zwischen einer Closure und einem Gültigkeitsbereich?
sobes.tech KI
Antwort von AI
Schließen ist eine Funktion, die sich an die Umgebung (lexikalischer Bereich) erinnert, in der sie erstellt wurde, auch wenn sie außerhalb dieses Bereichs ausgeführt wird. Dadurch kann sie auf Variablen aus dem Elternbereich zugreifen.
Der Geltungsbereich ist der Bereich des Programms, in dem eine Variable oder Funktion sichtbar und zugänglich ist. In JavaScript gibt es globale, funktionale und Blockbereiche.
Hauptunterschied:
- Geltungsbereich bestimmt, wo eine Variable oder Funktion während der Kompilierung (oder des Parsings) verfügbar ist.
- Schließung ermöglicht es einer Funktion, den Zugriff auf Variablen aus ihrem Erstellungsbereich nachdem dieser Bereich die Ausführung beendet hat, beizubehalten.
Beispiel für Geltungsbereich:
// Globaler Bereich
let globalVar = "Ich bin global";
function meineFunktion() {
// Funktionaler Bereich
let functionVar = "Ich bin funktional";
console.log(globalVar); // Verfügbar
}
// console.log(functionVar); // Fehler ReferenceError: functionVar ist nicht definiert
Beispiel für Schließung:
function createCounter() {
let count = 0; // Variable im Bereich createCounter
return function() { // Das ist eine Schließung
count++; // Zugriff auf count aus dem Elternbereich
console.log(count);
};
}
const counter = createCounter();
counter(); // Gibt 1 aus (count bleibt erhalten)
counter(); // Gibt 2 aus (count bleibt erhalten)
// console.log(count); // Fehler ReferenceError: count ist nicht definiert
In diesem Beispiel behält die innere Funktion (Schließung) den Zugriff auf die Variable count, auch nachdem createCounter seine Ausführung beendet hat. Dies ist durch die Schließung möglich.
Vergleich:
| Merkmal | Geltungsbereich | Schließung |
|---|---|---|
| Was bestimmt | Wo Variablen und Funktionen verfügbar sind | Wie eine Funktion den Zugriff auf Variablen aus dem Elternbereich behält |
| Wann aktiv | Während der Kompilierung (lexikalische Umgebung) | Während der Ausführung der in einem anderen Bereich erstellten Funktion |
| Beziehung | Schließung hängt vom Bereich ab, in dem sie erstellt wurde | Der Bereich ist ein grundlegendes Konzept zur Bestimmung der Zugänglichkeit |