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.