Kas ir JavaScript aizvērumi un kā tie darbojas?



Aizverumi JavaScript tiek izveidoti katru reizi, kad tiek izveidota funkcija, funkcijas izveides laikā. Tas nodrošina labāku kontroli pār kodu, tos izmantojot.

ir uz funkcijām orientēta valoda, kas lietotājam piešķir lielu brīvību. Varat dinamiski izveidot funkciju, kopēt to citā mainīgajā vai pārsūtīt kā argumentu citai funkcijai un vēlāk izsaukt no citas vietas. Aizverumi JavaScript tiek izveidoti katru reizi, kad tiek izveidota funkcija, funkcijas izveides laikā. Šajā rakstā mēs sapratīsim slēgšanu šādā secībā:

Ievads JavaScript aizvēršanā

Aizvēršana ir a kombinācija funkciju kopā ar atsaucēm uz tās apkārtējo stāvokli, t.i., leksisko vidi. Citiem vārdiem sakot, aizvēršana nodrošina piekļuvi no iekšējās funkcijas uz ārējās funkcijas darbības jomu.





kodētājs - aizvērumi javascript - edureka

kā iestatīt Java ceļu Windows

Lielākā daļa izstrādātāju apzināti vai neapzināti izmanto JavaScript aizvērumus. Tas nodrošina labāku kontroli pār kodu, tos izmantojot. Turklāt tas ir visbiežāk uzdotais jautājums jebkura jautājuma laikā .



Piemērs:

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 ())

Izeja:

10
10
10



Šeit jūs varat piekļūt mainīgais x, kas tiek definēts funkcijā foo () caur funkciju internal (), jo vēlāk tiek saglabāta aptverošās funkcijas darbības ķēde tajā brīdī, kad tiek veikta aizvēršanas funkcija. Tādējādi iekšējā funkcija zina x vērtību caur tās darbības ķēdi. Šādi jūs varat izmantot aizvērumus JavaScript.

Praktiskas slēgšanas

Aizvēršana ļauj saistīt leksisko vidi ar funkciju, kas darbojas ar šiem datiem. Tam ir acīmredzamas paralēles objektorientēta programmēšana , kur objekti ļauj mums saistīt objekta īpašības ar vienu vai vairākām metodēm.

Līdz ar to slēdzi var izmantot jebkur, kur objektu parasti varētu izmantot, izmantojot tikai vienu metodi.

kāda ir tostring metode java

Piemērs:

funkcija makeSizer (izmērs) {atgriešanās funkcija () {document.body.style.fontSize = izmērs + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

Iepriekš minētais piemērs parasti ir pievienots kā atzvanīšana: viena funkcija, kas tiek izpildīta, reaģējot uz notikumu.

Darbības jomas ķēde

JavaScript aizvēršanai ir trīs darbības jomas, piemēram:

  • Vietējā darbības joma
  • Ārējo funkciju darbības joma
  • Globālā darbības joma

Bieža kļūda ir neapzināšanās, ka gadījumā, ja ārējā funkcija pati par sevi ir ligzdota funkcija, piekļuve ārējās funkcijas darbības jomai ietver ārējās funkcijas norobežojošo darbības jomu, efektīvi izveidojot funkciju tvērumu ķēdi.

// globālā darbības joma var x = 10 funkciju summa (a) {atgriešanās funkcija (b) {atgriešanās funkcija (c) {// ārējo funkciju darbības joma atgriešanās funkcija (d) {// vietējā darbības joma atgriež a + b + c + d + x}}}} console.log (summa (1) (2) (3) (4)) // žurnāls 20

To var rakstīt arī bez anonīmām funkcijām:

glabāšanas klases c ++
// globālā darbības joma var x = 10 funkciju summa (a) {atgriešanās funkcija summa2 (b) {atgriešanās funkcija summa3 (c) {// ārējo funkciju darbības joma atgriešanās funkcija summa4 (d) {// vietējā darbības joma atgriež a + b + c + d + x}}}} var s = summa (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) console.log (s3) // log 20

Iepriekš minētajā piemērā ir virkne ligzdotu funkciju, kurām visām ir piekļuve funkcijas ārējai darbības jomai. Tādējādi jūs varat teikt, ka slēgšanai ir piekļuve visām ārējo funkciju jomām, kurās tās tika deklarētas.

Slēgšana lokā

Varat izmantot JavaScript aizvērumus, lai katrā anketā saglabātu anonīmu funkciju masīvs . Ņemsim piemēru un redzēsim, kā slēgumi tiek izmantoti lokā.

Piemērs:

funkcija ārējā () {var arr = [] var i par (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]())

Izeja:

3
3
3
3

Ar to mēs esam nonākuši mūsu raksta beigās. Es ceru, ka jūs sapratāt, kā darbojas JavaScript aizvērumi un kā tie tiek izmantoti, lai labāk kontrolētu kodu.

Tagad, kad jūs zināt par JavaScript aizvēršanu, pārbaudiet autore Edureka. Tīmekļa attīstības sertifikācijas apmācība palīdzēs jums uzzināt, kā izveidot iespaidīgas vietnes, izmantojot HTML5, CSS3, Twitter Bootstrap 3, jQuery un Google API, un izvietot to Amazon Simple Storage Service (S3).

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā “Aizverumi JavaScript”, un mēs ar jums sazināsimies.