Hvad er lukninger i JavaScript, og hvordan fungerer de?



Lukninger i JavaScript oprettes hver gang en funktion oprettes, på tidspunktet for oprettelse af funktion. Det giver bedre kontrol over koden, når du bruger dem.

er et funktionsorienteret sprog, der giver brugeren meget frihed. Du kan oprette en funktion dynamisk, kopiere den til en anden variabel eller videregive som et argument til en anden funktion og ringe fra et andet sted senere. Lukninger i JavaScript oprettes hver gang en funktion oprettes, på tidspunktet for oprettelse af funktion. I denne artikel vil vi forstå lukninger i følgende rækkefølge:

Introduktion til lukninger i JavaScript

En lukning er en kombination af en fungere bundtet sammen med referencer til dets omgivende tilstand, dvs. det leksikale miljø. Med andre ord giver en lukning dig adgang fra en indre funktion til en ydre funktions rækkevidde.





koder - lukninger i javascript - edureka

De fleste af udviklerne bruger bevidst eller ubevidst lukninger i JavaScript. Det giver bedre kontrol over koden, når du bruger dem. Det er også det hyppigst stillede spørgsmål under enhver .



Eksempel:

funktion foo () {var x = 10 funktion indre () {return x} return indre} var get_func_inner = foo () console.log (get_func_inner ()) console.log (get_func_inner ()) console.log (get_func_inner ())

Produktion:

10
10
10



gå til funktion i python

Her kan du få adgang til variabel x, der er defineret i funktion foo () gennem funktion indre (), da den senere bevarer omfangskæden for omsluttende funktion på tidspunktet for udførelse af omsluttende funktion. Således kender den indre funktion værdien af ​​x gennem sin omfangskæde. Sådan kan du bruge lukninger i JavaScript.

Praktiske lukninger

Lukninger giver dig mulighed for at knytte det leksikale miljø til en funktion, der fungerer på disse data. Dette har indlysende paralleller til objektorienteret programmering , hvor objekter giver os mulighed for at knytte objektets egenskaber til en eller flere metoder.

Derfor kan du bruge en lukning hvor som helst, som du normalt bruger et objekt med kun en enkelt metode.

Eksempel:

java matrix af objekter eksempel
funktion makeSizer (størrelse) {returfunktion () {document.body.style.fontSize = størrelse + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

Ovenstående eksempel er generelt knyttet som en tilbagekaldelse: en enkelt funktion, der udføres som svar på begivenheden.

Omfangskæde

Lukninger i JavaScript har tre anvendelsesområder som:

  • Lokalt anvendelsesområde
  • Ydre funktionsomfang
  • Globalt anvendelsesområde

En almindelig fejl er ikke at indse, at i det tilfælde, hvor den ydre funktion i sig selv er en indlejret funktion, inkluderer adgang til den ydre funktions rækkevidde det omgivende omfang af den ydre funktion, hvilket effektivt skaber en kæde af funktionsomfang.

// globalt omfang var x = 10 funktionssum (a) {returfunktion (b) {returfunktion (c) {// ydre funktioner omfangsreturfunktion (d) {// lokal rækkevidde returnerer + + b + c + d + x}}}} konsol.log (sum (1) (2) (3) (4)) // log 20

Det kan også skrives uden anonyme funktioner:

// globalt omfang var x = 10 funktionssum (a) {returfunktion sum2 (b) {returfunktion sum3 (c) {// ydre funktioner rækkefunktionsreturfunktion sum4 (d) {// lokalt omfangsretur 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 ovenstående eksempel er der en række indlejrede funktioner, som alle har adgang til det ydre omfang af en funktion. Derfor kan du sige, at lukninger har adgang til alle ydre funktionsomfang, inden for hvilke de blev deklareret.

Lukning inden for en løkke

Du kan bruge lukninger i JavaScript til at gemme en anonym funktion ved hvert indeks i en array . Lad os tage et eksempel og se, hvordan lukninger bruges i en løkke.

Eksempel:

function outer() { 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]())

Produktion:

3
3
3
3

Med dette er vi kommet til slutningen af ​​vores artikel. Jeg håber, du har forstået, hvordan lukninger i JavaScript fungerer, og hvordan de bruges til at få en bedre kontrol over koden.

hvordan man udskriver git commit log

Nu hvor du kender til Lukninger i JavaScript, skal du tjekke af Edureka. Webudvikling certificeringstræning hjælper dig med at lære, hvordan du opretter imponerende websteder ved hjælp af HTML5, CSS3, Twitter Bootstrap 3, jQuery og Google API'er og distribuerer det til Amazon Simple Storage Service (S3).

Har du et spørgsmål til os? Nævn det i kommentarfeltet under “Lukninger i JavaScript”, så vender vi tilbage til dig.