Closures

Closures (domknięcia) w JavaScript są potężnym mechanizmem pozwalającym funkcji pamiętać i mieć dostęp do zmiennych z jej zakresu leksykalnego, nawet po wyjściu z tego zakresu. Dzięki closures, można tworzyć funkcje, które mają stały dostęp do zmiennych z ich zakresu nadrzędnego, co pozwala na tworzenie bardziej modułowego i ukierunkowanego kodu.

Przykład 1: Proste closure

Opis: W tym przykładzie pokazujemy, jak funkcja wewnętrzna pamięta wartość zmiennej ze swojego zakresu zewnętrznego.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Przykład Closure w JavaScript</title>
</head>
<body>
    <script>
        // Definicja prostej funkcji z closure
        function zewnetrzna() {
            let licznik = 0; // Zmienna w zakresie zewnętrznym
            // Funkcja wewnętrzna, tworząca closure
            function wewnetrzna() {
                licznik += 1; // Dostęp do zmiennej zewnętrznej
                console.log(licznik);
            }
            return wewnetrzna;
        }

        const inkrementuj = zewnetrzna(); // Tworzenie instancji closure
        inkrementuj(); // Wywołanie wewnętrznej funkcji, wypisze: 1
        inkrementuj(); // Wypisze: 2
        inkrementuj(); // Wypisze: 3

        // Każde wywołanie funkcji `inkrementuj` zachowuje stan zmiennej `licznik`
    </script>
</body>
</html>

Ten przykład ilustruje, jak closures mogą być użyte do stworzenia “prywatnych” zmiennych, które są dostępne tylko dla określonych metod, ukrywając je przed resztą programu.

Podsumowanie

Closures w JavaScript pozwalają na tworzenie funkcji, które mają dostęp do zmiennych z ich zakresu leksykalnego, nawet po zakończeniu działania funkcji, w której te zmienne zostały zadeklarowane. Pozwala to na tworzenie bardziej skomplikowanych konstrukcji programistycznych, takich jak funkcje fabrykujące, enkapsulacja danych czy operacje na danych utrzymujących swój stan między wywołaniami.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs JavaScript od podstaw w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top