Kihesabu Kufunga kwa JavaScript
Wacha tuandike tena msimbo tuliochukua
ili kitendakazi kilichorejeshwa kila wakati
kuongeza thamani ya kutofautisha num
kwa moja:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // ongeza moja
}
}
let func = test();
Inabadilika kuwa kila wito wa kitendakazi func
kitatumia console kutoa thamani mpya:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //itaonyesha 1
func(); //itaonyesha 2
func(); //itaonyesha 3
func(); //itaonyesha 4
func(); //itaonyesha 5
Inabadilika kuwa tumetekeleza kihesabu cha wito wa
vitendakazi, tukitumia kufunga (kwa usahihi zaidi kutumia
kutofautisha num kutoka kufunga kwa kitendakazi chetu).
Kumbuka kuwa kila wito wa kitendakazi test
utarejesha kitendakazi kipya, ambacho
kitakuwa na kufunga kwake mwenyewe. Hii ina maana vihesabu tofauti
vitafanya kazi kwa kujitegemea:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // kihesabu cha kwanza
func1(); //itaonyesha 1
func1(); //itaonyesha 2
let func2 = test(); // kihesabu cha pili
func2(); //itaonyesha 1
func2(); //itaonyesha 2
Inabadilika kuwa kutofautisha num kile kile
kwa vitendakazi tofauti kitakuwa na thamani tofauti!
Hii ina maana ikiwa tutaita kitendakazi test
mara mbili, basi vitendakazi vitakavyopatikana kutoka humo
vitafanya kazi kwa njia huru na kila moja ya
hivi vitendakazi kitakuwa na kutofautisha kwa kujitegemea
num.
Wewe mwenyewe, bila kuangalia kwenye msimbo wangu, itekeleze kihesabu cha wito wa kitendakazi, kinachofanya kazi kwa kufunga.
Acha kitendakazi katika kufunga kihifadhi nambari 10.
Fanya hivi, ili kila wito wa kitendakazi
upunguze nambari hii kwa 1 na uonyeshe
kwenye console nambari iliyopunguzwa.
Badilisha shida iliyotangulia ili
kuhesabu kufikia 0, kisha kila
wito unaofuata wa kitendakazi uonyeshe kwenye console
ujumbe kwamba kuhesabu kumekwisha.