Domknięcia w JavaScript

Przejdźmy teraz do nauki pojęcia domknięcie (closure). W zasadzie już znasz to pojęcie, pozostało tylko poznać poprawną terminologię.

A więc, domknięcie - to funkcja wraz ze wszystkimi zmiennymi zewnętrznymi, które są dla niej dostępne. Albo, innymi słowy, domknięcie - to funkcja wraz ze swoim otoczeniem leksykalnym.

W JavaScript najczęściej, mówiąc "domknięcie funkcji", mają na myśli nie samą tę funkcję, a właśnie jej zmienne zewnętrzne. Jeśli jakaś funkcja otrzymuje zmienną ze swojego otoczenia leksykalnego, to mówi się "zmienna jest brana z domknięcia".

Przypomnijmy kod, który zrobiliśmy w poprzedniej lekcji:

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

let func = test();
func(); // wyświetli 1

W tym przypadku można powiedzieć, że funkcja func otrzymuje wartość zmiennej num z domknięcia. Można też powiedzieć, że funkcja func przechowuje wartość zmiennej num w domknięciu.