Ano ang Mga Closure sa JavaScript at Paano Gumagana?



Ang mga pagsara sa JavaScript ay nilikha tuwing nalilikha ang isang pagpapaandar, sa oras ng paglikha ng pag-andar. Nagbibigay ito ng mas mahusay na kontrol sa code kapag ginagamit ang mga ito.

ay isang wika na nakatuon sa pag-andar na nagbibigay ng maraming kalayaan sa gumagamit. Maaari kang lumikha ng isang pagpapaandar nang pabagu-bago, kopyahin ito sa ibang variable o ipasa bilang isang argument sa ibang pag-andar at tumawag mula sa ibang lugar sa paglaon. Ang mga pagsara sa JavaScript ay nilikha tuwing nalilikha ang isang pagpapaandar, sa oras ng paglikha ng pag-andar. Sa artikulong ito, mauunawaan namin ang mga pagsasara sa sumusunod na pagkakasunud-sunod:

Panimula sa Mga Pagsara sa JavaScript

Ang pagsara ay isang kumbinasyon ng a pagpapaandar na naka-bundle kasama ng mga sanggunian sa nakapalibot na estado ibig sabihin ay ang leksikal na kapaligiran. Sa madaling salita, ang isang pagsasara ay nagbibigay sa iyo ng pag-access mula sa isang panloob na pagpapaandar sa saklaw ng isang panlabas na pag-andar.





coder - pagsasara sa javascript - edureka

Karamihan sa mga Nag-develop ay gumagamit ng pagsasara sa JavaScript nang sinasadya o walang malay. Nagbibigay ito ng mas mahusay na kontrol sa code kapag ginagamit ang mga ito. Gayundin, ito ang pinakamadalas itanong sa anumang .



Halimbawa:

db browser para sa sqlite tutorial
function foo () {var x = 10 function inside () {return x} return inside} var get_func_inner = foo () console.log (get_func_inner ()) console.log (get_func_inner ()) console.log (get_func_inner ())

Output:

10
10
10



Dito, maaari mong ma-access ang variable x na tinukoy sa pag-andar ng foo () sa pamamagitan ng pag-andar sa panloob () na sa paglaon ay pinapanatili ang kadena ng saklaw ng kalakip na pag-andar sa oras ng pagpapatupad ng pag-andar ng pag-enclose. Kaya, alam ng panloob na pagpapaandar ang halaga ng x sa pamamagitan ng chain chain. Ito kung paano mo magagamit ang mga pagsasara sa JavaScript.

Mga Praktikal na Pagsara

Pinapayagan ka ng mga pagsara na maiugnay ang leksikal na kapaligiran sa isang pagpapaandar na nagpapatakbo sa data na iyon. Ito ay may halatang pagkakapareho sa programa na nakatuon sa object , kung saan pinapayagan kami ng mga bagay na maiugnay ang mga katangian ng object sa isa o higit pang mga pamamaraan.

Dahil dito, maaari kang gumamit ng isang pagsasara kahit saan na maaari kang normal na gumamit ng isang bagay na may isang solong pamamaraan lamang.

Halimbawa:

function makeSizer (laki) {return function () {document.body.style.bestSize = size + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

Ang halimbawa sa itaas ay pangkalahatang nakakabit bilang isang callback: isang solong pagpapaandar na naisagawa bilang tugon sa kaganapan.

Saklaw ng Chain

Ang mga pagsara sa JavaScript ay mayroong tatlong saklaw tulad ng:

  • Lokal na Saklaw
  • Saklaw ng Outer Function
  • Global Saklaw

Ang isang pangkaraniwang pagkakamali ay hindi napagtanto na, sa kaso kung saan ang panlabas na pag-andar ay mismong pag-andar, ang pag-access sa saklaw ng panlabas na pag-andar ay nagsasama ng nakapaloob na saklaw ng panlabas na pag-andar, na epektibo na lumilikha ng isang kadena ng mga saklaw ng pag-andar.

java break out of method
// global na saklaw var x = 10 function sum (a) {return function (b) {return function (c) {// panlabas na mga function na function ng pagbalik ng saklaw (d) {// lokal na saklaw na bumalik ng + b + c + d + x}}}} console.log (kabuuan (1) (2) (3) (4)) // log 20

Maaari rin itong isulat nang walang mga hindi nagpapakilalang pag-andar:

// global Saklaw var x = 10 function sum (a) {return function sum2 (b) {return function sum3 (c) {// panlabas na mga function saklaw bumalik function sum4 (d) {// lokal na saklaw bumalik ng isang + 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

Sa halimbawa sa itaas, mayroong isang serye ng mga naka-salad na pag-andar na ang lahat ay may access sa panlabas na saklaw ng isang pag-andar. Sa gayon, maaari mong sabihin na ang pagsasara ay may access sa lahat ng mga panlabas na saklaw ng pag-andar sa loob ng kung saan sila ay idineklara.

Pagsasara Sa Loob ng isang Loop

Maaari mong gamitin ang mga pagsasara sa JavaScript upang mag-imbak ng isang hindi nagpapakilalang pagpapaandar sa bawat index ng isang array . Kumuha tayo ng isang halimbawa at tingnan kung paano ginagamit ang mga pagsasara sa loob ng isang loop.

ano ang dax sa kapangyarihan bi

Halimbawa:

panlabas na pag-andar () {var arr = [] var i para sa (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]())

Output:

3
3
3
3

Sa pamamagitan nito, napunta kami sa dulo ng aming artikulo. Inaasahan kong naiintindihan mo kung paano gumagana ang mga pagsasara sa JavaScript at kung paano ginagamit ang mga ito upang makakuha ng isang mas mahusay na kontrol sa code.

Ngayong alam mo na ang tungkol sa Closures sa JavaScript, tingnan ang ni Edureka. Tutulungan ka ng Pagsasanay sa Pagpapatunay sa Pag-unlad ng Web na Alamin kung paano lumikha ng mga kahanga-hangang website gamit ang HTML5, CSS3, Twitter Bootstrap 3, jQuery at Google API at i-deploy ito sa Amazon Simple Storage Service (S3).

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng 'Mga Pagsara sa JavaScript' at babalikan ka namin.