Què són els tancaments a JavaScript i com funcionen?



Els tancaments a JavaScript es creen cada vegada que es crea una funció, en el moment de la creació de la funció. Proporciona un millor control sobre el codi en utilitzar-los.

és un llenguatge orientat a funcions que dóna molta llibertat a l'usuari. Podeu crear una funció dinàmicament, copiar-la a una altra variable o passar-la com a argument a una altra funció i trucar des d’un lloc diferent més endavant. Els tancaments a JavaScript es creen cada vegada que es crea una funció, en el moment de la creació de la funció. En aquest article, entendrem els tancaments en la següent seqüència:

Introducció als tancaments en JavaScript

Un tancament és una combinació de funció agrupades amb referències al seu estat circumdant, és a dir, a l’entorn lèxic. En altres paraules, un tancament us proporciona accés des d’una funció interna a l’abast d’una funció externa.





codificador - tancaments en javascript - edureka

La majoria dels desenvolupadors utilitzen tancaments en JavaScript conscientment o inconscientment. Proporciona un millor control sobre el codi en utilitzar-los. A més, és la pregunta més freqüent durant qualsevol .



Exemple:

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

Sortida:

10
10
10



binari a decimal en java

Aquí podeu accedir al fitxer variable x que es defineix a la funció foo () a través de la funció inner () ja que la posterior conserva la cadena d'abast de la funció de tancament en el moment de l'execució de la funció de tancament. Per tant, la funció interna coneix el valor de x a través de la seva cadena d’abast. Així podeu utilitzar els tancaments a JavaScript.

Tancaments pràctics

Els tancaments us permeten associar l’entorn lèxic a una funció que funciona amb aquestes dades. Això té paral·lels evidents programació orientada a objectes , on els objectes ens permeten associar les propietats de l’objecte a un o més mètodes.

En conseqüència, podeu utilitzar un tancament en qualsevol lloc que normalment pugueu fer servir un objecte amb un sol mètode.

Exemple:

funció makeSizer (mida) {funció de retorn () {document.body.style.fontSize = mida + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

L'exemple anterior s'adjunta generalment com a devolució de trucada: una funció única que s'executa en resposta a l'esdeveniment.

Àmbit de la cadena

Els tancaments a JavaScript tenen tres àmbits, com ara:

  • Abast local
  • Abast de les funcions externes
  • Abast global

Un error comú és no adonar-se que, en el cas que la funció externa sigui una funció imbricada, l’accés a l’abast de la funció externa inclou l’abast adjunt de la funció externa, creant efectivament una cadena d’àmbits de funció.

// àmbit global var x = 10 funció suma (a) {funció de retorn (b) {funció de retorn (c) {// funcions externes funció de retorn d’àmbit (d) {// àmbit local retorn a a + b + c + d + x}}}} console.log (sum (1) (2) (3) (4)) // registre 20

També es pot escriure sense funcions anònimes:

// abast global var x = 10 funció suma (a) {funció de retorn suma2 (b) {funció de retorn suma3 (c) {// funcions externes àmbit funció de retorn suma4 (d) {// àmbit local torna a + b + c + d + x}}}} var s = suma (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) console.log (s3) // registre 20

A l'exemple anterior, hi ha una sèrie de funcions imbricades que tenen accés a l'abast extern d'una funció. Així, es pot dir que els tancaments tenen accés a tots els àmbits de funcions externes dins dels quals s'han declarat.

Tancament dins d’un bucle

Podeu utilitzar tancaments a JavaScript per emmagatzemar una funció anònima a tots els índexs d'un fitxer matriu . Prenguem un exemple i vegem com s’utilitzen els tancaments dins d’un bucle.

Exemple:

funció exterior () {var arr = [] var i per a (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]())

Sortida:

3
3
3
3

Amb això, hem arribat al final del nostre article. Espero que hagueu entès com funcionen els tancaments a JavaScript i com s’utilitzen per obtenir un millor control del codi.

Ara que ja coneixeu els tancaments a JavaScript, consulteu el fitxer per Edureka. La formació en certificació per al desenvolupament web us ajudarà a aprendre a crear llocs web impressionants mitjançant HTML5, CSS3, Twitter Bootstrap 3, jQuery i API de Google i implementar-lo a Amazon Simple Storage Service (S3).

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris de 'Tancaments en JavaScript' i us respondrem.