Kaj so zapore v JavaScript in kako delujejo?



Zapore v JavaScript se ustvarijo vsakič, ko je funkcija ustvarjena, ob ustvarjanju funkcije. Zagotavlja boljši nadzor nad kodo pri njihovi uporabi.

je funkcijsko usmerjen jezik, ki daje uporabniku veliko svobode. Funkcijo lahko ustvarite dinamično, jo kopirate v drugo spremenljivko ali kot argument prenesete v drugo funkcijo in pozneje pokličete z drugega mesta. Zapore v JavaScript se ustvarijo vsakič, ko je funkcija ustvarjena, v času ustvarjanja funkcije. V tem članku bomo razumeli zapore v naslednjem zaporedju:

Uvod v zapiranje v JavaScript

Zapiranje je kombinacija a funkcijo skupaj s sklici na njegovo okoliško stanje, tj.leksično okolje. Z drugimi besedami, zapiranje vam omogoča dostop od notranje funkcije do obsega zunanje funkcije.





koder - zapiranja v javascriptu - edureka

Večina razvijalcev zapiranje v JavaScript uporablja zavestno ali nezavedno. Zagotavlja boljši nadzor nad kodo pri njihovi uporabi. Prav tako je najpogostejše vprašanje med katerim koli .



kaj je podniz v javi

Primer:

function foo () {var x = 10 function internal () {return x} return inner} var get_func_inner = foo () console.log (get_func_inner ()) console.log (get_func_inner ()) console.log (get_func_inner ())

Izhod:

10.
10.
10.



Tukaj lahko dostopate do spremenljivka x, ki je definiran v funkciji foo () skozi funkcijo inner (), saj pozneje ohranja verigo obsega ograjevalne funkcije v času izvajanja funkcije zapiranja. Tako notranja funkcija ve vrednost x skozi verigo obsega. Tako lahko uporabljate zapore v JavaScript.

Praktična zapiranja

Zapore omogočajo povezovanje leksikalnega okolja s funkcijo, ki deluje na podlagi teh podatkov. To ima očitne vzporednice z objektno usmerjeno programiranje , kjer nam predmeti omogočajo, da lastnosti predmeta povežemo z eno ali več metodami.

Posledično lahko zapiranje uporabite kjer koli, da običajno uporabljate predmet samo z eno samo metodo.

Primer:

funkcija makeSizer (velikost) {return funkcija () {document.body.style.fontSize = velikost + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

Zgornji primer je običajno priložen kot povratni klic: ena funkcija, ki se izvede kot odziv na dogodek.

razlika med final final in finalize v javi

Scope Chain

Zapore v JavaScript imajo tri področja uporabe, kot so:

  • Lokalni obseg
  • Obseg zunanjih funkcij
  • Globalni obseg

Pogosta napaka je, da se ne zavedamo, da v primeru, ko je zunanja funkcija sama ugnezdena funkcija, dostop do obsega zunanje funkcije vključuje obseg zapiranja zunanje funkcije, kar dejansko ustvarja verigo obsegov funkcij.

// globalni obseg var x = 10 vsota funkcije (a) {funkcija vrnitve (b) {funkcija vrnitve (c) {// funkcija zunanjega obsega funkcija vrnitve (d) {// lokalno območje vrnitve a + b + c + d + x}}}} console.log (sum (1) (2) (3) (4)) // dnevnik 20

Zapišemo ga lahko tudi brez anonimnih funkcij:

// globalni obseg var x = 10 funkcija vsota (a) {funkcija vrnitve vsota2 (b) {funkcija vrnitve vsota3 (c) {// funkcija zunanjega obsega funkcija vrnitve vsota4 (d) {// lokalno področje vrnitev a + b + c + d + x}}}} var s = vsota (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) console.log (s3) // dnevnik 20

V zgornjem primeru obstaja vrsta ugnezdenih funkcij, ki imajo vse dostop do zunanjega obsega funkcije.Tako lahko rečete, da imajo zapirala dostop do vseh obsegov zunanjih funkcij, znotraj katerih so bile prijavljene.

Zapiranje v zanki

Zapore v JavaScript lahko uporabite za shranjevanje anonimne funkcije pri vsakem indeksu datoteke matriko . Vzemimo primer in si oglejmo, kako se zapore uporabljajo v zanki.

Primer:

funkcija zunanja () {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]())

Izhod:

3.
3.
3.
3.

S tem smo prišli do konca našega članka. Upam, da ste razumeli, kako zapiranja v JavaScript delujejo in kako se uporabljajo za boljši nadzor nad kodo.

kako postati razvijalec tabele

Zdaj, ko veste o zaprtjih v JavaScript, si oglejte avtor Edureka. Izobraževanje za certificiranje spletnega razvoja vam bo pomagalo Naučiti se ustvariti impresivna spletna mesta z uporabo API-jev HTML5, CSS3, Twitter Bootstrap 3, jQuery in Google ter jih namestiti v Amazon Simple Storage Service (S3).

Imate vprašanje za nas? Prosimo, omenite ga v oddelku za komentarje v poglavju »Zapiranje v JavaScript« in se vam bomo oglasili.