Aizvēršanās JavaScript
Tagad pētīsim jēdzienu aizvēršanās (closure). Patiesībā jūs jau esat iepazinušies ar šo jēdzienu, atliek tikai apgūt pareizo terminoloģiju.
Tātad, aizvēršanās ir funkcija kopā ar visām ārējām mainīgajām, kas tai ir pieejamas. Vai, citiem vārdiem sakot, aizvēršanās ir funkcija kopā ar savu leksisko vidi.
JavaScript visbiežāk, sakot "funkcijas aizvēršanās", domā nevis pašu funkciju, bet gan tieši tās ārējos mainīgos. Ja kāda funkcija iegūst mainīgo no savas leksiskās vides, tad saka "mainīgais tiek ņemts no aizvēršanās".
Atsimēsim kodu, ko mēs izveidojām iepriekšējā nodarbībā:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // izvadīs 1
Šajā gadījumā var teikt, ka funkcija
func iegūst mainīgā num vērtību
no aizvēršanās. Var arī teikt,
ka funkcija func glabā mainīgā
num vērtību aizvēršanās.