Domknięcia , znane jako closures, to jedna z fundamentalnych koncepcji JavaScript, która pozwala na dostęp do zmiennych zewnętrznych z wnętrza funkcji. Mechanizm ten umożliwia tworzenie funkcji wewnątrz innych funkcji i zachowanie dostępu do ich zakresu leksykalnego nawet po zakończeniu wykonania funkcji zewnętrznej.
Co to jest DomknięciE ?
Domknięcie występuje, gdy funkcja jest w stanie “pamiętać” i uzyskać dostęp do swojego zakresu leksykalnego, nawet gdy jest wywoływana poza swoim pierwotnym zakresem. Każda funkcja w JavaScript, podczas tworzenia, zamyka nad sobą zakres, w którym została zdefiniowana. Oznacza to, że może korzystać ze zmiennych, które były jej dostępne w momencie definicji.
function createGreeting(greeting) {
return function(name) {
console.log(`${greeting}, ${name}!`);
};
}
const sayHello = createGreeting("Hello");
const sayHi = createGreeting("Hi");
sayHello("Alice"); // Wyświetla "Hello, Alice!"
sayHi("Bob"); // Wyświetla "Hi, Bob!"
W powyższym przykładzie, funkcja createGreeting
tworzy i zwraca nową funkcję, która zamyka nad sobą zmienną greeting
. Każda zwrócona funkcja “pamięta” wartość zmiennej greeting
, którą miała w momencie tworzenia.
Przydatność domknięć
Zamknięcia są wykorzystywane w JavaScript w wielu przypadkach, w tym do:
- Tworzenia funkcji fabrycznych, które mogą generować inne funkcje z dostępem do określonych zmiennych.
- Implementacji enkapsulacji i prywatności, pozwalając na ukrywanie implementacji i eksponowanie tylko publicznego interfejsu.
- Utrzymywania stanu w asynchronicznych operacjach, takich jak obsługa zdarzeń czy operacje na serwerze.
domknięcia a zmienne
Ważne jest, aby pamiętać, że domknięcia zamykają nad sobą odniesienia do zmiennych, a nie ich bieżące wartości. Oznacza to, że jeśli zmienna zmieni swoją wartość po utworzeniu zamknięcia, funkcja będzie korzystać z aktualnej wartości tej zmiennej.
Podsumowanie
Zamknięcia w JavaScript to potężny mechanizm, który pozwala funkcjom uzyskać dostęp do zmiennych z ich zakresu leksykalnego, nawet po opuszczeniu tego zakresu. Umożliwiają tworzenie bardziej modułowego i enkapsulowanego kodu, zachowując jednocześnie stan w aplikacjach. Rozumienie i efektywne wykorzystanie domknięć jest kluczowe dla zaawansowanego programowania w JavaScript.
Jeżeli chcesz przyśpieszyć swoją naukę chciałbym polecić mój kurs video JavaScript w którym nauczysz się tego języka od podstaw do zaawansowanych jego koncepcji.