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.
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.