Wie funktionieren Closures in JavaScript? Erklären Sie anhand von Beispielen
Hallo zusammen! Ich habe gerade angefangen, JavaScript zu lernen, und verstehe das Thema Closures einfach nicht. Ich habe viele Artikel gelesen, bin aber immer noch verwirrt.
Hier ist ein Beispiel, das mich verwirrt. Ich erstelle eine Funktion, die eine andere Funktion zurückgibt:
```javascript
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter1 = createCounter();
const counter2 = createCounter();
console.log(counter1()); // 1
console.log(counter1()); // 2
console.log(counter2()); // 1 — warum nicht 3?
```
Warum verhalten sich `counter1` und `counter2` wie separate Zähler? Ich dachte, die Variable `count` wäre gemeinsam. Und wie merkt sich JavaScript den Wert von `count`, nachdem die Funktion `createCounter` ihre Arbeit beendet hat? Normalerweise werden lokale Variablen doch nach dem Verlassen der Funktion zerstört.
Erklären Sie mir bitte den Mechanismus von Closures in einfachen Worten. Wie speichern sie Referenzen auf Variablen? Und wo kann das in realen Projekten nützlich sein?