Hva er stenginger i JavaScript, og hvordan fungerer de?



Stengninger i JavaScript opprettes hver gang en funksjon opprettes, når funksjonen er opprettet. Det gir bedre kontroll over koden når du bruker dem.

er et funksjonsorientert språk som gir mye frihet til brukeren. Du kan opprette en funksjon dynamisk, kopiere den til en annen variabel eller overføre som et argument til en annen funksjon og ringe fra et annet sted senere. Stengninger i JavaScript opprettes hver gang en funksjon opprettes, når funksjonen er opprettet. I denne artikkelen vil vi forstå nedleggelser i følgende rekkefølge:

Introduksjon til lukkinger i JavaScript

En lukking er en kombinasjon av en funksjon samlet sammen med referanser til sin omgivende tilstand, dvs. det leksikale miljøet. Med andre ord gir en lukking deg tilgang fra en indre funksjon til en ytre funksjon.





koder - nedleggelser i javascript - edureka

hvordan du skriver inn java

De fleste av utviklerne bruker nedleggelser i JavaScript bevisst eller ubevisst. Det gir bedre kontroll over koden når du bruker dem. Det er også det ofte stilte spørsmålet under noen .



Eksempel:

funksjon foo () {var x = 10 funksjon indre () {retur x} retur indre} var get_func_inner = foo () console.log (get_func_inner ()) console.log (get_func_inner ()) console.log (get_func_inner ())

Produksjon:

10
10
10



Her kan du få tilgang til variabel x som er definert i funksjon foo () gjennom funksjon indre () som den senere bevarer omfangskjeden til omsluttende funksjon på tidspunktet for utførelse av innesluttende funksjon. Dermed kjenner den indre funksjonen verdien av x gjennom omfangskjeden. Slik kan du bruke nedleggelser i JavaScript.

Praktiske stengninger

Avslutninger lar deg knytte det leksikale miljøet til en funksjon som fungerer på disse dataene. Dette har åpenbare paralleller til Objektorientert programmering , hvor objekter tillater oss å knytte objektets egenskaper til en eller flere metoder.

Derfor kan du bruke en lukking hvor som helst, som du vanligvis bruker et objekt med bare en enkelt metode.

Eksempel:

funksjon makeSizer (størrelse) {returfunksjon () {document.body.style.fontSize = størrelse + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

Ovennevnte eksempel er vanligvis knyttet som tilbakeringing: en enkelt funksjon som utføres som svar på hendelsen.

Omfangskjede

Stengninger i JavaScript har tre omfang som:

  • Lokalt omfang
  • Ytre funksjoner Omfang
  • Globalt omfang

En vanlig feil er ikke å innse at, i tilfelle hvor den ytre funksjonen i seg selv er en nestet funksjon, inkluderer tilgang til den ytre funksjonens omfang det omsluttende omfanget av den ytre funksjonen, og skaper effektivt en kjede av funksjonsomfang.

// globalt omfang var x = 10 funksjonssum (a) {returfunksjon (b) {returfunksjon (c) {// ytre funksjoner omfang returfunksjon (d) {// lokalt omfang returnerer + + b + c + d + x}}}} console.log (sum (1) (2) (3) (4)) // log 20

Det kan også skrives uten anonyme funksjoner:

// globalt omfang var x = 10 funksjonssum (a) {returfunksjon sum2 (b) {returfunksjon sum3 (c) {// ytre funksjoner omfang returfunksjon sum4 (d) {// lokalt omfang retur a + b + c + d + x}}}} var s = sum (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) console.log (s3) // log 20

I eksemplet ovenfor er det en serie nestede funksjoner som alle har tilgang til det ytre omfanget av en funksjon. Dermed kan du si at nedleggelser har tilgang til alle ytre funksjonsomfang som de ble erklært for.

Lukking innenfor en løkke

Du kan bruke nedleggelser i JavaScript for å lagre en anonym funksjon ved hver indeks av en array . La oss ta et eksempel og se hvordan nedleggelser brukes i en løkke.

Eksempel:

funksjon ytre () {var arr = [] var i for (i = 0 i<3 i++) { // storing anonymus function arr[i] = function () { return i } } // returning the array. return arr } var get_arr = outer() console.log(get_arr[0]()) console.log(get_arr[1]()) console.log(get_arr[2]())

Produksjon:

3
3
3
3

c ++ flette sorteringskode

Med dette har vi kommet til slutten av artikkelen vår. Jeg håper du forsto hvordan nedleggelser i JavaScript fungerer og hvordan de brukes til å få bedre kontroll over koden.

Nå som du vet om stengninger i JavaScript, sjekk ut av Edureka. Webutvikling sertifiseringstrening hjelper deg med å lære hvordan du lager imponerende nettsteder ved hjelp av HTML5, CSS3, Twitter Bootstrap 3, jQuery og Google APIer og distribuerer det til Amazon Simple Storage Service (S3).

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet under “Stengninger i JavaScript”, så kommer vi tilbake til deg.