Ce sunt închiderile în JavaScript și cum funcționează?



Închiderile în JavaScript sunt create de fiecare dată când este creată o funcție, la momentul creării funcției. Oferă un control mai bun asupra codului atunci când le utilizați.

este un limbaj orientat spre funcții care oferă multă libertate utilizatorului. Puteți crea o funcție dinamic, o puteți copia într-o altă variabilă sau puteți trece ca argument către o altă funcție și puteți apela dintr-un alt loc mai târziu. Închiderile în JavaScript sunt create de fiecare dată când este creată o funcție, la momentul creării funcției. În acest articol, vom înțelege închiderile în următoarea succesiune:

Introducere în închideri în JavaScript

O închidere este o combinație a funcţie grupat împreună cu referințe la starea sa înconjurătoare, adică mediul lexical. Cu alte cuvinte, o închidere vă oferă acces de la o funcție interioară la scopul unei funcții externe.





coder - închideri în javascript - edureka

Majoritatea dezvoltatorilor folosesc închiderile în JavaScript conștient sau inconștient. Oferă un control mai bun asupra codului atunci când le utilizați. De asemenea, este cea mai frecventă întrebare din timpul oricărei .



Exemplu:

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

Ieșire:

10
10
10



la puterea lui in java

Aici puteți accesa fișierul variabil x care este definit în funcția foo () prin funcția inner (), deoarece ulterior păstrează lanțul scopului funcției de închidere în momentul executării funcției de închidere. Astfel, funcția interioară cunoaște valoarea lui x prin lanțul său de scop. Acesta este modul în care puteți utiliza închiderile în JavaScript.

Închideri practice

Închiderile vă permit să asociați mediul lexical cu o funcție care operează pe acele date. Acest lucru are paralele evidente cu programare orientată obiect , unde obiectele ne permit să asociem proprietățile obiectului cu una sau mai multe metode.

În consecință, puteți utiliza o închidere oriunde ați putea utiliza în mod normal un obiect cu o singură metodă.

Exemplu:

funcție makeSizer (dimensiune) {returnare funcție () {document.body.style.fontSize = dimensiune + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

Exemplul de mai sus este, în general, atașat ca apel invers: o singură funcție care este executată ca răspuns la eveniment.

Lanțul de aplicare

Închiderile în JavaScript au trei domenii, cum ar fi:

  • Domeniul de aplicare local
  • Domeniul funcțiilor externe
  • Domeniul de aplicare global

O greșeală obișnuită este să nu ne dăm seama că, în cazul în care funcția exterioară este ea însăși o funcție imbricată, accesul la domeniul de aplicare al funcției externe include domeniul de aplicare al funcției externe, creând efectiv un lanț de domenii de funcții.

// global scope var x = 10 function sum (a) {return function (b) {return function (c) {// external functions scope return function (d) {// local scope return a + b + c + d + x}}}} console.log (sum (1) (2) (3) (4)) // log 20

Poate fi scris și fără funcții anonime:

// global scope var x = 10 function sum (a) {return function sum2 (b) {return function sum3 (c) {// external functions scope return function sum4 (d) {// local scope return 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

În exemplul de mai sus, există o serie de funcții imbricate care au acces la sfera exterioară a unei funcții. Astfel, puteți spune că închiderile au acces la toate sfera funcției externe în cadrul cărora au fost declarate.

Închiderea în cadrul unui buclă

Puteți utiliza închiderile în JavaScript pentru a stoca o funcție anonimă la fiecare index al unui matrice . Să luăm un exemplu și să vedem cum sunt utilizate închiderile într-o buclă.

Exemplu:

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

Ieșire:

3
3
3
3

Cu aceasta, am ajuns la sfârșitul articolului nostru. Sper că ați înțeles cum funcționează închiderile în JavaScript și cum sunt utilizate pentru a obține un control mai bun al codului.

Acum, că știți despre Închideri în JavaScript, consultați de Edureka. Instruirea pentru certificarea dezvoltării web vă va ajuta să aflați cum să creați site-uri web impresionante folosind HTML5, CSS3, Twitter Bootstrap 3, jQuery și API-urile Google și să îl implementați în Amazon Simple Storage Service (S3).

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii din „Închideri în JavaScript” și vă vom răspunde.