Uždarosios funkcijos JavaScript

Dabar išnagrinėkime uždarosios funkcijos (closure) sąvoką. Tiesą sakant, jūs jau esate susipažinę su šia sąvoka, belieka tik sužinoti tinkamą terminologiją.

Taigi, uždaroji funkcija - tai funkcija kartu su visais išoriniais kintamaisiais, kurie jai yra prieinami. Arba, kitaip tariant, uždaroji funkcija - tai funkcija kartu su savo leksine aplinka.

JavaScript dažniausiai, sakant "funkcijos uždarumo sritis", turima omenyje ne pati funkcija, o būtent jos išoriniai kintamieji. Jei kuri nors funkcija gauna kintamąjį iš savo leksinės aplinkos, tai sakoma "kintamasis paimamas iš uždarumo srities".

Prisiminkime kodą, kurį sukūrėme ankstesnėje pamokoje:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
  }
}

let func = test();
func(); // išves 1

Šiuo atveju galima pasakyti, kad funkcija func gauna kintamojo num reikšmę iš uždarumo srities. Taip pat galima pasakyti, kad funkcija func saugo kintamojo num reikšmę uždarumo srityje.