Domknięcia (Closures) w JavaScript

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.

 

 

 

 

Scroll to Top