JavaScript nestede funksjoner

JavaScript nestede funksjoner

JavaScript nestede funksjoner er de typer funksjoner som er definert i en annen funksjon. En eller flere funksjoner kan legges til i en funksjon, og omfanget av de ytre funksjonene inkluderer disse nestede eller indre funksjonene. De ytre funksjonene blir også referert til som overordnede funksjoner, og de indre funksjonene kan kalles barnefunksjoner i JavaScript nestede funksjoner. Variablene og parametrene til overordnede funksjonen er tilgjengelige for barnefunksjonen, mens overordnede funksjonen ikke får tilgang til variablene som er erklært i barnefunksjonene.

Denne oppskrivningen diskuterte JavaScript nestede funksjoner. Videre har vi også forklart det variable omfanget, parametrene og returuttalelsene fra de nestede funksjonene ved hjelp av eksemplene.

JavaScript nestede funksjoner

I JavaScript er en nestet funksjon en funksjon som er definert i eller innenfor en annen funksjon. Prosedyren for å lage en nestet funksjon er den samme som vi følger for den normale funksjonen, men for å lage en nestet funksjon, må vi definere den nye eller barnefunksjonen inne i foreldrefunksjonen.

Her er Syntaks av JavaScript nestede funksjoner:

Funksjon ParentFunction () // Funksjonsdefinisjon

Funksjon ChildFunction () // Funksjonsdefinisjon

// Body of the Child -funksjonen

ChildFunction (); // Child Function Calling

ParentFunction (); // Foreldrefunksjonsanrop

Som du ser av syntaks, må vi definere barnefunksjonen () i parentfunksjonen (). Når vi også vil påkalle barnefunksjonen (), må vi kalle det innenfor liket av parentfunksjonen ().

Eksempel: Bruke JavaScript nestede funksjoner

Dette eksemplet vil vise deg hvordan du lager JavaScript nestede funksjoner. For dette formålet vil vi definere en foreldrefunksjon som heter “addnum ()”, Som har to parametere,“x”Og“y”. Etter å ha gjort det, vil vi opprette en barnefunksjon “Vis melding()”Som skriver ut en tekstmelding til konsollvinduet:

funksjon addnum (x, y)

// nestet funksjon
Funksjon ShowMessage (tekst)

konsoll.logg (tekst);

La sum = x+y;
// påkalle den nestede funksjonen
ShowMessage ("Sum er"+ sum)

Merk at vi har kalt “Vis melding()”Funksjon i funksjonsdefinisjonen av“addnum ()”Funksjon. I neste trinn vil vi ringe overordnede funksjonen addNum () mens vi passerer “5”Og“6”Som argumenter:

addnum (5,6)

Som du kan se av utgangen, har vi fullført de nestede funksjonene til vårt eksempel:

Variabelt omfang av JavaScript nestede funksjoner

La oss nå snakke om omfanget av de nestede funksjonene i JavaScript. De nestede funksjonene har sitt eget omfang; Imidlertid kan de også få tilgang til omfanget av foreldrenes eller ytre funksjon. Du bør huske på to punkter om det variable omfanget av JavaScript nestede funksjoner: en nestet funksjon er privat for sin overordnet funksjon, og en nestet funksjon har tilgang til overordnede funksjonens omfang.

Vi vil forklare hver av de gitte uttalelsene ved hjelp av eksempler.

Som vi har sagt, blir den nestede funksjonen betraktet "privat”For funksjonen som inneholder definisjonen. Det betyr at bare foreldrene eller den inneholdende funksjonen har tilgang til den nestede funksjonen, og du vil ikke få tilgang til den utenfor den spesifiserte funksjonen. Dette skjer fordi vi har definert den indre funksjonen inne i det ytre funksjonsomfanget.

For eksempel har vi definert en ytre funksjon "Legg til nummer()”I den undergitte koden og la deretter den indre funksjonen“Vis melding()”Innenfor definisjonen av den ytre funksjonen:

funksjon addnumber (x, y)

Funksjon ShowMessage (tekst)

konsoll.logg (tekst);

La sum = x+y;
ShowMessage ("Sum er" + sum)

Nå, når vi prøver å få tilgang til den indre funksjonen “Vis melding()”Utenfor omfanget vil det kaste“UNHAWARED REFERANSEERROR”Feil:

ShowMessage ('20 ');

Alle funksjonene, variablene og argumentene som er definert i den ytre funksjonen er tilgjengelige for den opprettede nestede funksjonen. Denne evnen er kjent som "leksikalsk omfang", der den indre funksjonen kan få tilgang til omfanget av overordnet eller ytre funksjon.

Vi vil ikke gi noen argumenter til vår showmessage () indre funksjon i det undergitte eksemplet. Det vi vil gjøre er å bruke argumentene “x”Og“y" av vår "Legg til nummer()”Ytre funksjon og“sum”Variabel:

funksjon addnumber (x, y)

Funksjon ShowMessage ()

konsoll.logg ('sum av %d + %d er %d', x, y, sum);

La sum = x+y;
Vis melding()

Nå vil vi påkalle den ytre funksjonen “Legg til nummer()”Og passere“4”Og“6”Som argumenter:

AddNumber (4,6)

Ta en titt på den undergitte utgangen, som betyr at vi har fått tilgang til "sum”Variabel,”x”, Og“y”Argument om tilleggsfunksjonen AddNumber i ShowMessage () -funksjonen:

Returnerer en javascript nestet funksjon

Den ytre funksjonen har muligheten til å returnere den nestede funksjonen. For eksempel, i det undergitte eksemplet, har DisplayCounter () -funksjonen en "telle”Variabel og returnerer økningen () indre funksjon:

funksjon displayCounter ()
La Count = 0;
økning = funksjon ()
Retur ++ Count;
;
Returøkning;

Vi lagrer DisplayCounter () -funksjonen i “disk”I neste trinn. Nå er konseptet vi trenger å diskutere her at "økning ()”Funksjon vil fortsatt ha tilgang til“telle”Eiendom til“DisplayCounter ()”Funksjon når DisplayCounter () avsluttet utførelsen. “Lukking”, En JavaScript -funksjon, gjør dette mulig.

Her "telle”Eiendom er lokal for“DisplayCounter ()”Funksjon imidlertid den definerte“økning”Funksjonen kan også få tilgang til den fordi den er nestet inne i“DisplayCounter ()”Funksjon:

Counter = DisplayCounter ()

Den ovennevnte koden vil kalle ut “DisplayCounter ()”Funksjon. Deretter vil DisplayCounter () -funksjonen først initialisere "telle”Variabel til“0”Verdi og returnerer deretter“økning ()”Funksjon. Fordi det "telle”Eiendom blir ikke ødelagt, når vi vil kalle økningsfunksjonen gjennom“disk()”, Hver gang“telle”Eiendom vil bli økt i henhold til den ekstra koden:

konsoll.log (counter ());
konsoll.log (counter ());
konsoll.log (counter ());

Sjekk ut den undergitte utgangen fra det angitte eksemplet:

Parametere for JavaScript nestede funksjoner

Den indre funksjonen kan også ta argumenter. For eksempel, i det følgende eksempel, "Innerfunction ()”Returneres av“ytrefunksjon ()”Og hver av dem godtar et argumentsett:

funksjon ytrefunksjon (x)
innerfunksjon = funksjon (y)
konsoll.logg ("x %d y %d", x, y)
;
returnere innerfunksjon;

Å få Innerfunction (), Vi vil legge til følgende kode i vårt JavaScript -program mens vi passerer “3”Som et argument for ytrefunksjon ():

Innerfunksjon = ytrefunksjon (3);

Deretter vil vi påkalle innerfunksjonen () med verdi “7”Som et argument:

Innerfunksjon (7);

Du kan også passere argumentene for både ytre og indre funksjoner på en gang:

ytrefunksjon (2) (3);

Begge de spesifiserte linjene i koden påkalte innerfunksjonen () og sender ut de passerte argumentene:

Konklusjon

JavaScript tillater deg å bruke nestede funksjoner i programmet uten å møte feil. En barn eller indre funksjon kan legges til i en ytre funksjon i JavaScript. Alle de lokale, globale variablene i den ytre funksjonen er tilgjengelige for den indre funksjonen. Når det. Denne oppskrivningen diskuterte JavaScript nestede funksjoner. Videre har vi også forklart det variable omfanget, nedleggelsesegenskapen, leksikalsk omfang, parametere og returuttalelser fra JavaScript nestede funksjoner, ved hjelp av eksemplene.