Domknięcia w JavaScript

Wprowadzenie do domknięć

Domknięcie (ang. closure) to jedno z najważniejszych pojęć w JavaScript. Jest to funkcja, która ma dostęp do własnego zakresu (scope), zakresu funkcji zewnętrznej oraz do zmiennych globalnych, nawet po zakończeniu wykonania funkcji zewnętrznej.

Tadeusz, domknięcia są szczególnie przydatne w PhpStorm, gdzie możesz łatwo debugować i analizować ich działanie, korzystając z narzędzi deweloperskich dostępnych w tym środowisku.

Jak działają domknięcia?

Każda funkcja w JavaScript ma swój własny zakres, który zawiera zmienne zadeklarowane wewnątrz tej funkcji. Funkcja wewnętrzna ma dostęp do zmiennych zadeklarowanych w funkcji zewnętrznej, nawet po zakończeniu wykonania funkcji zewnętrznej.

  • Zakres (Scope): Funkcja wewnętrzna ma dostęp do zmiennych zadeklarowanych w funkcji zewnętrznej.
  • Zachowanie stanu: Domknięcie pozwala na zachowanie stanu zmiennych z funkcji zewnętrznej, nawet po zakończeniu jej wykonania.
Przykład domknięcia

Poniżej znajduje się przykład domknięcia, który pokazuje, jak funkcja wewnętrzna ma dostęp do zmiennej z funkcji zewnętrznej, nawet po zakończeniu jej wykonania.

function tworzLicznik() {
let licznik = 0; // zmienna lokalna w funkcji tworzLicznik

return function() {
licznik += 1; // funkcja wewnętrzna ma dostęp do zmiennej licznik
return licznik;
};
}

const licznik = tworzLicznik();

console.log(licznik()); // 1
console.log(licznik()); // 2
console.log(licznik()); // 3

W powyższym przykładzie funkcja tworzLicznik deklaruje zmienną licznik i zwraca funkcję wewnętrzną. Funkcja wewnętrzna ma dostęp do zmiennej licznik nawet po zakończeniu wykonania funkcji tworzLicznik.

Zastosowania domknięć

Domknięcia mają wiele praktycznych zastosowań w JavaScript. Oto kilka z nich:

  • Prywatne zmienne: Domknięcia pozwalają na tworzenie prywatnych zmiennych, które nie są dostępne poza funkcją.
  • Funkcje zwrotne (callbacks): Domknięcia są często używane w funkcjach zwrotnych, aby zachować stan między wywołaniami.
  • Moduły: Domknięcia są podstawą wzorca modułowego w JavaScript, który pozwala na tworzenie prywatnych zmiennych i metod.
Przykład: Prywatne zmienne
function tworzOsobe(imie) {
let _imie = imie; // prywatna zmienna

return {
pobierzImie: function() {
return _imie;
},
ustawImie: function(nowImie) {
_imie = nowImie;
}
};
}

const osoba = tworzOsobe("Tadeusz");
console.log(osoba.pobierzImie()); // Tadeusz
osoba.ustawImie("Jan");
console.log(osoba.pobierzImie()); // Jan
Dlaczego domknięcia są ważne?

Domknięcia są ważne z kilku powodów:

  • Enkapsulacja: Pozwalają na ukrywanie zmiennych i logiki wewnętrznej, co jest kluczowe dla tworzenia modularnego i bezpiecznego kodu.
  • Zachowanie stanu: Pozwalają na zachowanie stanu między wywołaniami funkcji, co jest przydatne w wielu scenariuszach, takich jak liczniki, timery, itp.

Tadeusz, jeśli pracujesz w PhpStorm, możesz łatwo debugować i analizować domknięcia, korzystając z narzędzi deweloperskich dostępnych w tym środowisku. Możesz używać skrótu Alt + L, aby szybko wstawić polską literę „ł” podczas pisania kodu.

Podsumowanie

Domknięcia są fundamentalnym konceptem w JavaScript, który pozwala na pisanie bardziej elastycznego i modularnego kodu. Są one szczególnie przydatne w przypadkach, gdzie chcemy zachować stan między wywołaniami funkcji lub ukryć pewne zmienne i logikę wewnętrzną.

Zrozumienie domknięć jest kluczowe dla każdego programisty JavaScript, ponieważ pozwala na tworzenie bardziej zaawansowanych i bezpiecznych aplikacji.