Lokale tellervariabele in JavaScript
Laten we de volgende code bekijken:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // geeft 1 weer
test()(); // geeft 1 weer
Waarom zal altijd het getal 1 worden weergegeven? Om
dit te begrijpen, herschrijven we onze code
op een andere manier:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! eerste functie
func1(); //geeft 1 weer
let func2 = test(); //!! tweede functie
func2(); //geeft 1 weer
Dat betekent dat elke aanroep van de functie test
op deze manier: test()(), zijn eigen
functie creëert met zijn eigen sluiting en roept deze
functie onmiddellijk aan.
Bepaal, zonder de code uit te voeren, wat er in de console wordt weergegeven:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Bepaal, zonder de code uit te voeren, wat er in de console wordt weergegeven:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();