520
Rozdział 11 .
Definiowanie domknięć
Domykanie funkcji
Najprawdopodobniej odgadłeś to już, wykonując ostatnie ćwiczenie, jednak
przeanalizujemy całe zagadnienie raz jeszcze: funkcja zazwyczaj ma
zmienne
lokalne
definiowane w jej ciele (dotyczy to także ewentualnych parametrów),
lecz może także używać zmiennych, które nie zostały zdefiniowane lokalnie
wewnątrz niej — tzw.
zmiennych niezależnych (ang. free variable). Określenie
niezależne pochodzi stąd, że wewnątrz ciała funkcji zmiennym niezależnym nie
jest przypisana żadna wartość (innymi słowy, nie zostały one zadeklarowane
wewnątrz funkcji). A kiedy środowisko zawiera wartości wszystkich zmiennych
niezależnych, mówimy, że
domyka ono funkcję. Idąc dalej, jeśli połączymy
funkcję i jej środowisko, uzyskamy
domknięcie (ang. closure).
function justSayin() {
// kod funkcji
}
Domknięcie
Jeśli zmienna używana
w ciele mojej funkcji nie została
zdefiniowana lokalnie i nie jest zmienną
globalną, możesz się założyć, że pochodzi
ona z jednej z funkcji, w których mnie
zagnieżdżono i jest dostępna w moim
środowisku.
beingFunny = true;
notSoMuch = false;
LQ&RQYHUVDWLRQ:LWK ĵ3DZHïĵ
Domknięcie powstaje, kiedy połączymy funkcję
wykorzystującą zmienne niezależne ze środowiskiem
udostępniającym wartości, które są powiązane
z tymi zmiennymi.
jesteś tutaj
521
Funkcje anonimowe, zasięg i domknięcia
To już chyba dziesiąta strona, na
której zajmujemy się tym zagadnieniem.
Czy kiedyś jeszcze wrócimy do JavaScriptu
stosowanego w praktyce? Czy już na
zawsze pozostaniemy w świecie teorii?
Dlaczego w ogóle mam się przejmować tymi
niskopoziomowymi tajnikami działania funkcji?
Przecież wystarczy, że będę pisać funkcje
i je wywoływać, prawda?
Gdyby tylko domknięcia nie były tak diabelnie
przydatne, moglibyśmy się nawet z Tobą zgodzić.
Bardzo nam przykro, że musieliśmy Cię narazić na te wszystkie
trudności związane z nauką domknięć, ale zapewniamy, że to się opłaci.
Bo widzisz, domknięcia nie są jedynie jakąś teoretyczną konstrukcją
programowania funkcyjnego — są bardzo użyteczną techniką
programistyczną. A teraz, kiedy już zrozumiałeś, jak działają (i wcale
nie żartujemy, pisząc, że dobra znajomość domknięć jest czynnikiem,
który może znacząco podnieść Twoje notowania u szefostwa
i współpracowników), nadszedł czas, by nauczyć się, jak ich używać.
I jeszcze jedna, kluczowa sprawa: domknięcia są używane wszędzie.
W tak dużym stopniu staną się one Twoją drugą naturą, że wkrótce
zdasz sobie sprawę, że używasz ich naprawdę bardzo często. Napiszmy
w końcu jakieś domknięcie i przekonajmy się, o czym tu w ogóle
mówimy.
Get Programowanie w JavaScript Rusz głową! now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.