Kufunga kwa JavaScript
Wacha sasa tuchunguze dhana ya kufunga (closure). Kwa kweli wewe tayari unafahamu na dhana hii, inabaki tu kujua istilahi sahihi.
Kwa hivyo, kufunga ni kazi pamoja na vigezo vyote vya nje ambavyo vinapatikana kwake. Au, kwa maneno mengine, kufunga ni kazi pamoja na mazingira yake ya kileksia.
Katika JavaScript mara nyingi, wakati wakisema "kufunga kwa kazi", humaanisi sio kazi yenyewe, lakini hasa vigezo vyake vya nje. Ikiwa kazi fulani inapata kutofautisha kutoka kwa mazingira yake ya kileksia, basi husemwa "kutofautisha kunachukuliwa kutoka kwa kufunga."
Tukumbuke msimbo, ambao tulifanya katika somo lililopita:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // inatoa 1
Katika kesi hii inaweza kusemwa kuwa kazi
func inapata thamani ya kutofautisha
num kutoka kwa kufunga. Pia inaweza kusemwa,
kuwa kazi func inahifadhi thamani ya kutofautisha
num katika kufunga.