Zamknięcia JavaScript
Zmienne JavaScript mogą być zmienne lokalne lub globalne.
zmienne prywatne mogą być stosowane zamknięcia.
Zmienne globalne
Funkcja może uzyskać dostęp do zmiennych zdefiniowanych przez funkcje wewnętrzne, takie jak ?:
Funkcja ta może być również dostępny poza zmiennych funkcji zdefiniowane, takich jak:
Przykładem z tyłu, a jest zmienną globalną.
Na stronie internetowej znajdują się na globalnej zmiennej obiektu window.
globalne zmienne mogą być stosowane we wszystkich skrypty na stronie.
W pierwszej kolejności, a jest zmienną lokalną.
Zmienne lokalne mogą być wykorzystywane jedynie w celu określenia jego funkcji wewnętrznej. Dla innych funkcji lub kodu skryptu nie jest dostępna.
Nawet globalne i lokalne zmienne o tej samej nazwie, są także dwie różne zmienne. Modyfikacja jednego, to nie będzie miało wpływu na wartość drugiego.
Jeśli nie zadeklarować zmienną za pomocą słowa kluczowego var, to zmienna globalna, mimo że jest zdefiniowana wewnątrz funkcji. |
Zmienna cykl życia
Zakres zmiennych globalnych są globalne, czyli w całym programie JavaScript, zmienne globalne są wszędzie.
W zmiennej zadeklarowanej wewnątrz funkcji, działa tylko wewnątrz funkcji. Zmienne te są lokalne, zasięg lokalny; parametr funkcji jest zlokalizowana, tylko wewnątrz pracy funkcji.
Licznik Dilemma
Jeśli chcesz, aby wyobrazić sobie, w niektórych statystyk liczbowych i liczniki są dostępne we wszystkich funkcjach.
Można używać zmiennych globalnych, funkcja ustawia licznik jest zwiększany:
Przykłady
Funkcja add () {
Licznik + = 1;
}
add ();
add ();
add ();
// Licznik jest teraz 3
Spróbuj »
Zmiana licznika wystąpił w realizacji funkcji Dodaj ().
Ale pytanie jest, każdy skrypt na stronie można zmienić licznik, nawet jeśli nie ma połączeń, aby dodać funkcję ().
Jeśli oświadczam danej funkcji w liczniku, jeśli nie wywołać funkcję nie będą modyfikować wartość licznika:
Przykłady
Licznik var = 0;
Licznik + = 1;
}
add ();
add ();
add ();
// Celem jest wyjście 3, ale nie, to wyjście jest jedno!
Spróbuj »
Powyższy kod nie wyjdzie poprawnie, za każdym razem kiedy zadzwonić, aby dodać funkcję (), licznik zostanie ustawiony na 1.
Funkcja inline JavaScript może rozwiązać ten problem.
JavaScript zagnieżdżone funkcje
Wszystkie funkcje mogą uzyskać dostęp do zmiennych globalnych.
W rzeczywistości, w JavaScript, wszystkie funkcje mogą uzyskać do nich dostęp na podłodze zakresie.
JavaScript obsługuje funkcje zagnieżdżone. Funkcja zagnieżdżona mogą uzyskać dostęp do zmiennych na warstwie funkcyjnej.
W tym przykładzie funkcja zagnieżdżona Plus () może uzyskać dostęp do zmiennej licznika function parent:
Przykłady
Licznik var = 0;
Funkcja Plus () {licznik + = 1;}
PLUS ();
powrót licznika;
}
Spróbuj »
Jeśli mamy dostęp do funkcji poza plusa (), tak, że możemy zająć się losem ladzie.
Musimy również zapewnić, że licznik = 0 tylko raz.
Musimy zamknięcia.
Zamknięcia JavaScript
Pamiętaj wywołania funkcji sama zrobić? Funkcja ta zrobi?
Przykłady
Licznik var = 0;
Funkcja powrotu () {return licznik + = 1;}
}) ();
add ();
add ();
add ();
3 // Licznik
Spróbuj »
Przykłady analityczne
Dodaj zmienną słowo wskazuje, wartość zwracana funkcji nazywa siebie.
Funkcja własnym powołaniem jest wykonywana tylko raz. Ustawienie licznika do zera. I wrócić do wyrażenia funkcyjnego.
dodawania zmiennej w zależności od zastosowania. Wielkie jest to, że może on być dostępny od zakresu licznika warstwy funkcji.
To się nazywa zamknięcia JavaScript. Ma zmienną prywatną, tak że funkcja staje się możliwe.
Licznik, że zakres ochrony anonimowej funkcji mogą być modyfikowane tylko metodą dodawania.
Zamknięcia są dostępne na zakres jednofunkcyjny zmiennej wewnątrz funkcji, nawet jeśli funkcja warstwa została zamknięta. |