'n Teller op Sluitings in JavaScript
Laat ons die kode wat ons bespreek het herskryf
sodat die teruggekeerde funksie elke keer
die waarde van die veranderlike num
met een verhoog:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // voeg een by
}
}
let func = test();
Dit sal beteken dat elke oproep na die funksie func
'n nuwe waarde in die konsole sal vertoon:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); // sal 1 vertoon
func(); // sal 2 vertoon
func(); // sal 3 vertoon
func(); // sal 4 vertoon
func(); // sal 5 vertoon
Dit blyk dat ons 'n funksie-oproepteller geïmplementeer het
deur van 'n sluiting gebruik te maak (om presies te wees, deur die
veranderlike num van ons funksie se sluiting te gebruik).
Let op dat elke oproep na die funksie test
'n nuwe funksie sal teruggee, wat sy eie
sluiting sal hê. Dit beteken verskillende tellers
sal onafhanklik werk:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // eerste teller
func1(); // sal 1 vertoon
func1(); // sal 2 vertoon
let func2 = test(); // tweede teller
func2(); // sal 1 vertoon
func2(); // sal 2 vertoon
Dit beteken dat dieselfde veranderlike num
vir verskillende funksies verskillende waardes sal hê!
As ons dus die funksie test twee keer aanroep,
sal die funksies wat daaruit verkry word, onafhanklik werk
en elkeen van hierdie funksies sal sy eie onafhanklike
veranderlike num hê.
Implementeer self, sonder om na my kode te kyk, 'n funksie-oproepteller wat op sluitings werk.
Laat die funksie in die sluiting die getal 10 stoor.
Maak dit so dat elke oproep van die funksie
hierdie getal met 1 verminder
en die verminderde getal in die konsole vertoon.
Wysig die vorige taak sodat die aftelling tot by 0 gaan,
en dan sal elke daaropvolgende oproep van die funksie
'n boodskap in die konsole vertoon dat die aftelling voltooi is.