Lokale Zählervariable in JavaScript
Betrachten wir den folgenden Code:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // gibt 1 aus
test()(); // gibt 1 aus
Warum wird immer die Zahl 1 ausgegeben? Um
das zu verstehen, schreiben wir unseren Code
anders um:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! erste Funktion
func1(); //gibt 1 aus
let func2 = test(); //!! zweite Funktion
func2(); //gibt 1 aus
Das heißt, jeder Aufruf der Funktion test
auf diese Weise: test()(), erstellt eine eigene
Funktion mit ihrem eigenen Closure und ruft
diese Funktion sofort auf.
Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();