Funkcje zagnieżdżone JavaScript

Funkcje zagnieżdżone JavaScript

Funkcje zagnieżdżone JavaScript to typy funkcji zdefiniowanych w innej funkcji. Jedna lub więcej funkcji można dodać do funkcji, a zakres funkcji zewnętrznych obejmuje te zagnieżdżone lub wewnętrzne funkcje. Funkcje zewnętrzne są również określane jako funkcje nadrzędne, a funkcje wewnętrzne można nazwać funkcjami dziecięcymi w funkcjach zagnieżdżonych JavaScript. Zmienne i parametry funkcji nadrzędnej są dostępne dla funkcji dziecka, podczas gdy funkcja nadrzędna nie może uzyskać dostępu do zmiennych zadeklarowanych w funkcjach dziecka.

Ten zapis omówił funkcje zagnieżdżone JavaScript. Ponadto wyjaśniliśmy również zmienny zakres, parametry i deklaracje zwrotne z zagnieżdżonych funkcji za pomocą przykładów.

Funkcje zagnieżdżone JavaScript

W JavaScript funkcja zagnieżdżona jest funkcją zdefiniowaną wewnątrz lub w innej funkcji. Procedura tworzenia zagnieżdżonej funkcji jest taka sama, jak iw dla normalnej funkcji, ale aby utworzyć zagnieżdżoną funkcję, musimy zdefiniować nową lub dziecięcą funkcję w funkcji nadrzędnej.

Tutaj jest Składnia funkcji zagnieżdżonych JavaScript:

Funkcja ParentFunction () // Definicja funkcji

Funkcja ChildFunction () // Definicja funkcji

// Ciało funkcji dziecka

ChildFunction (); // wywoływanie funkcji dziecięcej

ParentFunction (); // wywołanie funkcji nadrzędnych

Jak widać z składni, musimy zdefiniować Dziećfunkcję () w funkcji nadrzędnej (). Ponadto, gdy chcemy wywołać funkcję ChildFunction (), musimy nazwać to w treści funkcji nadrzędnej ().

Przykład: Korzystanie z funkcji zagnieżdżonych JavaScript

Ten przykład pokaże, jak tworzyć funkcje zagnieżdżone JavaScript. W tym celu zdefiniujemy funkcję nadrzędną o nazwie „addnum ()”, Który ma dwa parametry,„X" I "y". Po zrobieniu tego stworzymy funkcję dziecka „Pokaż wiadomość()”, Który drukuje wiadomość tekstową do okna konsoli:

funkcja addnum (x, y)

// Funkcja zagnieżdżona
funkcja showMessage (tekst)

konsola.log (tekst);

Niech suma = x+y;
// wywołując zagnieżdżoną funkcję
showmessage („suma to”+ suma)

Zauważ, że nazywaliśmy „Pokaż wiadomość()”Funkcja w definicji funkcji„addnum ()”Funkcja. W następnym kroku wywołamy funkcję nadrzędną addnum () podczas przekazywania „5" I "6„Jak argumenty:

addnum (5,6)

Jak widać z wyjścia, pomyślnie wykonaliśmy zagnieżdżone funkcje naszego przykładu:

Zmienny zakres funkcji zagnieżdżonych JavaScript

Porozmawiajmy teraz o zakresie zagnieżdżonych funkcji w JavaScript. Funkcje zagnieżdżone mają swój własny zakres; Mogą jednak również uzyskać dostęp do zakresu funkcji nadrzędnej lub zewnętrznej. Należy pamiętać o dwóch punktach o zmiennym zakresie funkcji zagnieżdżonych JavaScript: Funkcja zagnieżdżona jest prywatna dla jej funkcji nadrzędnej, a funkcja zagnieżdżona ma dostęp do zakresu funkcji nadrzędnej.

Wyjaśnimy każde z podanych stwierdzeń za pomocą przykładów.

Jak powiedzieliśmy, funkcja zagnieżdżona jest rozważana „prywatny”Dla funkcji zawierającej swoją definicję. Oznacza to, że tylko rodzic lub funkcja zawierająca może uzyskać dostęp do funkcji zagnieżdżonej i nie będziesz mógł uzyskać dostępu do niej poza określoną funkcją. Dzieje się tak, ponieważ zdefiniowaliśmy funkcję wewnętrzną wewnątrz zakresu funkcji zewnętrznej.

Na przykład zdefiniowaliśmy funkcję zewnętrzną „Dodaj numer()”W poniższym kodzie, a następnie dodaj funkcję wewnętrzną„Pokaż wiadomość()”W definicji funkcji zewnętrznej:

Funkcja dodatkowa liczba (x, y)

funkcja showMessage (tekst)

konsola.log (tekst);

Niech suma = x+y;
showmessage („suma to” + suma)

Teraz, kiedy próbujemy uzyskać dostęp do funkcji wewnętrznej „Pokaż wiadomość()„Poza jego zakresem rzuci„Nieprawidłowy odniesienie" błąd:

showmessage ('20 ');

Wszystkie funkcje, zmienne i argumenty zdefiniowane w funkcji zewnętrznej są dostępne dla utworzonej funkcji zagnieżdżonej. Ta umiejętność jest znana jako „zakres leksykalny”, w którym funkcja wewnętrzna może uzyskać dostęp do zakresu funkcji nadrzędnej lub zewnętrznej.

Nie przekazamy żadnych argumentów do naszej funkcji wewnętrznej showMessage (). To, co zrobimy, to wykorzystanie argumentów „X" I "y" z naszego "Dodaj numer()„Funkcja zewnętrzna i„suma" zmienny:

Funkcja dodatkowa liczba (x, y)

funkcja showMessage ()

konsola.log („suma %d + %d to %d ', x, y, suma);

Niech suma = x+y;
Pokaż wiadomość()

Teraz wywołamy funkcję zewnętrzną „Dodaj numer()”I przekaż„4" I "6„Jak argumenty:

Dodatek (4,6)

Spójrz na podanie poniżej danych, co oznacza, że ​​udało nam się uzyskać „suma" zmienny, "X", I "y”Argument funkcji zewnętrznej liczby dodatków w funkcji showMessage ():

Zwracanie funkcji zagnieżdżonej JavaScript

Funkcja zewnętrzna ma zdolność do zwrócenia zagnieżdżonej funkcji. Na przykład, w poniższym przykładzie, funkcja displayCounter () ma „liczyć„Zmienna i zwraca funkcję wewnętrzną inkrementa ():

funkcja displayCounter ()
Niech liczy = 0;
increment = function ()
return ++ Count;
;
Przyrost zwrotu;

Przechowujemy funkcję displayCounter () w „lada”W następnym kroku. Teraz koncepcja, którą musimy tutaj omówić, jest to, że „przyrost()„Funkcja nadal będzie miała dostęp do„liczyć„Własność„ „displayCounter ()„Funkcja, gdy DisplayCounter () zakończył wykonanie. "Zamknięcie”, Funkcja JavaScript, umożliwia to.

Tutaj "liczyć„Nieruchomość jest lokalna dla„displayCounter ()”Funkcja jednak zdefiniowana„przyrost„Funkcja może również uzyskać do niego dostęp, ponieważ jest zagnieżdżona w„displayCounter ()”Funkcja:

Counter = DisplayCounter ()

Powyższy kod wywoła „displayCounter ()”Funkcja. Następnie funkcja displayCounter () najpierw zainicjuje „liczyć„Zmienna do„0„Wartość, a następnie zwraca„przyrost()”Funkcja. Ponieważ "liczyć„Własność nie jest zniszczona, kiedy wywołamy funkcję przyrostu przez„lada()”, Za każdym razem„liczyć„Własność zostanie zwiększona zgodnie z dodanym kodem:

konsola.log (licznik ());
konsola.log (licznik ());
konsola.log (licznik ());

Sprawdź poniżej podane dane wyjściowe:

Parametry funkcji zagnieżdżonych JavaScript

Funkcja wewnętrzna może również przyjmować argumenty. Na przykład w poniższym przykładzie „innerfunction ()”Zwraca„ „funkcja zewnętrzna ()”I każdy z nich akceptuje zestaw argumentów:

funkcja zewnętrzna funkcja (x)
innerFunction = funkcja (y)
konsola.log („x %d y %d”, x, y)
;
Zwrot wewnętrzny;

Aby uzyskać innerfunction (), Przyjmując następujący kod w naszym programie JavaScript podczas przekazywania „3”Jako argument za funkcja zewnętrzna ():

Funkcja wewnętrzna = funkcja zewnętrzna (3);

Następnie powołamy się na wartość () z wartością „7„Jako argument:

Funkcja wewnętrzna (7);

Możesz także przekazać argumenty zarówno dla funkcji zewnętrznych, jak i wewnętrznych jednocześnie:

funkcja zewnętrzna (2) (3);

Oba określone wiersze kodu wywołały innerfunction (), jak i wyprowadzają przekazane argumenty:

Wniosek

JavaScript pozwala używać funkcji zagnieżdżonych w programie bez napotkania błędów. Dziecko lub funkcja wewnętrzna może być dodana do funkcji zewnętrznej w JavaScript. Wszystkie lokalne zmienne globalne funkcji zewnętrznej są dostępne dla funkcji wewnętrznej. W przypadku funkcji zewnętrznej dostępne są tylko wartości właściwości globalnych oraz metody i zmienne zdefiniowane w funkcjach nadrzędnych. Ten zapis omówił funkcje zagnieżdżone JavaScript. Ponadto wyjaśniliśmy również zmienny zakres, właściwość zamknięcia, zakres leksykalny, parametry i instrukcje zwrotne funkcji zagnieżdżonych JavaScript, za pomocą przykładów.