Kas yra „JavaScript“ uždarymai ir kaip jie veikia?

„JavaScript“ uždarymai sukuriami kiekvieną kartą, kai sukuriama funkcija, funkcijos kūrimo metu. Tai leidžia geriau kontroliuoti kodą juos naudojant.

yra į funkciją orientuota kalba, suteikianti vartotojui daug laisvės. Galite dinamiškai sukurti funkciją, nukopijuoti ją į kitą kintamąjį arba perduoti kaip argumentą į kitą funkciją ir paskambinti iš kitos vietos vėliau. „JavaScript“ uždarymai sukuriami kiekvieną kartą, kai sukuriama funkcija, funkcijos kūrimo metu. Šiame straipsnyje mes suprasime uždarymus tokia seka:

Įvadas į „JavaScript“ uždarymus

Uždarymas yra a derinys funkcija kartu su nuorodomis į aplinkinę būseną, t. y. leksinę aplinką. Kitaip tariant, uždarymas suteikia jums galimybę naudotis vidine funkcija prie išorinės funkcijos.



koderis - uždarymai javascript - edureka

Dauguma kūrėjų sąmoningai ar nesąmoningai naudoja „JavaScript“ uždarymus. Tai leidžia geriau kontroliuoti kodą juos naudojant. Be to, tai yra dažniausiai užduodamas klausimas .

Pavyzdys:

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

Išvestis:

10
10
10

Čia galite pasiekti kintamasis x, kuris yra apibrėžtas funkcijoje foo () per funkciją vidinė (), nes vėliau išsaugoma uždarymo funkcijos apimties grandinė uždarymo funkcijos vykdymo metu. Taigi, vidinė funkcija žino x reikšmę per jos apimties grandinę. Štai kaip „JavaScript“ galite naudoti uždarymus.

Praktiniai uždarymai

Uždarymai leidžia susieti leksinę aplinką su funkcija, kuri veikia tuos duomenis. Tai turi akivaizdžių paralelių Objektinis programavimas , kai objektai leidžia mums susieti objekto savybes su vienu ar keliais metodais.

Todėl uždarymą galite naudoti bet kur, kur paprastai galite naudoti objektą, naudodami tik vieną metodą.

susietas sąrašas c programoje

Pavyzdys:

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

Aukščiau pateiktas pavyzdys paprastai pridedamas kaip atgalinis skambutis: viena funkcija, vykdoma reaguojant į įvykį.

sqoop importavimas iš „Oracle“ į hdfs

Taikymo grandinė

„JavaScript“ uždarymai turi tris taikymo sritis, tokias kaip:

  • Vietinė sritis
  • Išorinių funkcijų apimtis
  • Visuotinė taikymo sritis

Dažna klaida yra nesuvokimas, kad tuo atveju, kai išorinė funkcija pati yra įdėta funkcija, prieiga prie išorinės funkcijos apimties apima išorinės funkcijos apimtį, efektyviai sukuriant funkcijų apimčių grandinę.

// visuotinė apimtis var x = 10 funkcijų suma (a) {grąžinimo funkcija (b) {grąžinimo funkcija (c) {// išorinių funkcijų apimties grąžinimo funkcija (d) {// vietinė apimtis grąžina a + b + c + d + x}}}} console.log (suma (1) (2) (3) (4)) // 20 žurnalas

Tai taip pat gali būti parašyta be anoniminių funkcijų:

// visuotinė apimtis var x = 10 funkcijų suma (a) {grąžinimo funkcija suma2 (b) {grąžinimo funkcija suma3 (c) {// išorinių funkcijų apimtis grąžinimo funkcija suma4 (d) {// vietinė apimtis grąžina a + b + c + d + x}}}} var s = suma (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) console.log (s3) // log 20

Ankstesniame pavyzdyje yra daugybė įdėtų funkcijų, kurios visos turi prieigą prie išorinės funkcijos apimties. Taigi, galite sakyti, kad uždarymai turi prieigą prie visų išorinių funkcijų, kuriose jie buvo deklaruoti.

Uždarymas per kilpą

Jei norite išsaugoti anoniminę funkciją kiekviename indekse, galite naudoti „JavaScript“ uždarymus masyvas . Paimkime pavyzdį ir pažiūrėkime, kaip uždarymai naudojami cikle.

Pavyzdys:

funkcija išorinė () {var arr = [] var i (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]())

Išvestis:

3
3
3
3

Tuo mes pasiekėme savo straipsnio pabaigą. Tikiuosi, kad supratote, kaip veikia „JavaScript“ uždarymai ir kaip jie naudojami norint geriau valdyti kodą.

Dabar, kai žinote apie „JavaScript“ uždarymus, patikrinkite pateikė Edureka. Žiniatinklio kūrimo sertifikavimo mokymai padės jums sužinoti, kaip sukurti įspūdingas svetaines naudojant HTML5, CSS3, „Twitter Bootstrap 3“, „jQuery“ ir „Google“ API ir pritaikyti ją „Amazon Simple Storage Service“ (S3).

Turite mums klausimą? Prašome tai paminėti komentarų skiltyje „Uždarymai„ JavaScript ““ ir mes su jumis susisieksime.