Denne oppskrivningen er en komplett Nybegynnerguide til JavaScript -stenginger der vi vil diskutere variabel tilgang innen forskjellige omfang.
Før vi dykker inn i konseptet med JavaScript -stenginger, vil vi først forklare hva Leksikalsk scoping er som begge begrepene er assosiert med hverandre.
Leksikalsk scoping i JavaScript
Det variable omfanget bestemmes av erklæringen i kildekoden, kjent som “Leksikalsk scoping”. For eksempel, i det undergitte eksemplet, er det opprettet "Navn”Variabel er en“global"Variabel som betyr at det kan nås hvor som helst i programmet, for eksempel innenfor"DisplayMessage ()”Funksjon.
Derimot, "info" er en "lokal”Variabel som bare kan nås i"DisplayMessage ()”Funksjon:
La navn = 'Alex';Utførelse av den ovennevnte koden vil vise følgende utgang:
Nestet leksikalsk scoping i JavaScript
Omfanget av variablene kan hekkes ved hjelp av “Leksikalsk scoping”På en slik måte at den indre funksjonen kan ha tilgang til variablene erklært i det ytre omfang.
Tenk på følgende eksempel:
funksjon displayMessage ()I dette eksemplet "DisplayMessage ()”Funksjon har en lokal variabel som heter“info”Og en nestet”forestilling()”Funksjon, hvor“forestilling()" er en indre funksjon som har muligheten til å få tilgang til verdien av “info”Variabel fra ytre omfang.
Så når “DisplayMessage ()”Funksjon utføres, den vil kalle“forestilling()”Funksjon, som deretter vil få tilgang til“info”Variabel og vise verdien på konsollen:
Nå vil vi endre "DisplayMessage ()”Metode og i stedet for å påkalle det indre”forestilling()”Funksjon, vil vi legge til en uttalelse for å returnere“forestilling()”Funksjonsobjekt:
funksjon displayMessage ()Vi har også tildelt verdien som er returnert av "DisplayMessage ()”Funksjon til“x”Variabel:
La x = displayMessage ();Til slutt vil vi påkalle “x ()”Funksjon som refererer til“forestilling()”Funksjon:
konsoll.log (x ());Du kan se fra den gitte utgangen, verdien av den lokale variabelen “info”Eksisterer fremdeles som vanligvis gjenstår i minnet til utførelsen av funksjonen der den er erklært:
Virker forvirret? Dette er magien med Lukking som du har sett i det siste eksemplet som “forestilling()”Er en lukkefunksjon som opprettholder det ytre omfanget i sitt eget omfang.
Hva er JavaScript -stenginger
JavaScript -funksjoner fungerer også som "Stenginger”Fordi kroppen til en funksjon har tilgang til variablene som er definert utenfor den. Eller vi kan definere “Lukking”Som en funksjon som er en barnefunksjon og kan få tilgang til variablene som er opprettet i“foreldre”Funksjonsomfang.
La oss nå sjekke ut noen eksempler for å forstå sammenhengen mellom variable omfang og nedleggelse i JavaScript.
Eksempel 1
Dette eksemplet demonstrerer hvordan en “lokal”Variabel”info”Kan nås i"forestilling()”Funksjon der den opprettes. Husk at det gjenværende skriptet ikke har tilgang til dette “info”Variabel:
Når “forestilling()”Funksjon utføres, den vil vise verdien som er lagret i“info”Variabel:
Eksempel 2
Nå vil vi erklære “info" som en "global”Variabel som er referert til i“forestilling()”Funksjon (har forskjellige omfang):
Som JavaScript -funksjonen "forestilling()”Funksjon er en“Lukking”, Vil det opprettholde omfanget og tilstanden til“info”Variabel:
Eksempel 3
I en annen situasjon, når variabler er definert i omfanget av “foreldre”Funksjon,“barn”Funksjon kan fortsatt få tilgang til verdien deres:
Utgangen fra det gitte programmet betyr at "forestilling()”Som er en barnefunksjon, kan få tilgang til“info”Variabel erklært i“DisplayMessage ()”Foreldrefunksjon:
Det var all viktig informasjon relatert til JavaScript -stenginger. Du kan videre forske i henhold til dine krav.
Konklusjon
JavaScript -funksjoner også tjene som Stenginger Fordi kroppen til en funksjon har tilgang til variablene som er definert utenfor den. Vi kan definere Lukking som en barnefunksjon som kan få tilgang til variablene som er opprettet innenfor overordnede funksjonsomfang. Denne oppskrivningen er en komplett Nybegynnerguide til JavaScript -stenginger der vi har diskutert variabel tilgang innen forskjellige omfang.