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ā:

javascriptfunction 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.