Zähler mit Closures in JavaScript
Lassen Sie uns den von uns betrachteten Code so umschreiben,
dass die zurückgegebene Funktion jedes Mal
den Wert der Variable num
um eins erhöht:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // eins addieren
}
}
let func = test();
Es stellt sich heraus, dass jeder Aufruf der Funktion func
einen neuen Wert in der Konsole ausgibt:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //gibt 1 aus
func(); //gibt 2 aus
func(); //gibt 3 aus
func(); //gibt 4 aus
func(); //gibt 5 aus
Es stellt sich heraus, dass wir einen Zähler für Funktionsaufrufe
implementiert haben, indem wir einen Closure verwendet haben (genauer gesagt, die
Variable num aus dem Closure unserer Funktion).
Beachten Sie, dass jeder Aufruf der Funktion test
eine neue Funktion zurückgibt, die
ihren eigenen Closure hat. Das bedeutet, dass verschiedene Zähler
unabhängig voneinander arbeiten:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // erster Zähler
func1(); //gibt 1 aus
func1(); //gibt 2 aus
let func2 = test(); // zweiter Zähler
func2(); //gibt 1 aus
func2(); //gibt 2 aus
Es stellt sich heraus, dass dieselbe Variable num
für verschiedene Funktionen unterschiedliche Werte haben wird!
Das bedeutet, wenn wir die Funktion test
zweimal aufrufen, dann werden die daraus erhaltenen Funktionen
unabhängig voneinander arbeiten und jede dieser
Funktionen wird ihre eigene unabhängige
Variable num haben.
Implementieren Sie selbstständig, ohne in meinen Code zu schauen, einen Funktionsaufrufzähler, der mit Closures arbeitet.
Lassen Sie die Funktion in einem Closure die Zahl 10 speichern.
Sorgen Sie dafür, dass jeder Funktionsaufruf
diese Zahl um 1 verringert und
die verringerte Zahl in der Konsole ausgibt.
Modifizieren Sie die vorherige Aufgabe so, dass
der Countdown bis 0 läuft und dann jeder
folgende Funktionsaufruf eine Nachricht
in der Konsole ausgibt, dass der Countdown beendet ist.