Wat zijn sluitingen in JavaScript en hoe werken ze?



Afsluitingen in JavaScript worden gemaakt elke keer dat een functie wordt gemaakt, tijdens het maken van een functie. Het biedt een betere controle over de code bij het gebruik ervan.

is een functiegerichte taal die de gebruiker veel vrijheid geeft. U kunt een functie dynamisch maken, deze naar een andere variabele kopiëren of als argument doorgeven aan een andere functie en later vanaf een andere plaats aanroepen. Afsluitingen in JavaScript worden gemaakt elke keer dat een functie wordt gemaakt, tijdens het maken van een functie. In dit artikel zullen we afsluitingen in de volgende volgorde begrijpen:

hoe de scannerklasse in java te gebruiken

Inleiding tot sluitingen in JavaScript

Een sluiting is een combinatie van een functie gebundeld met verwijzingen naar de omringende toestand, d.w.z. de lexicale omgeving. Met andere woorden, een sluiting geeft u toegang van een innerlijke functie naar de reikwijdte van een uiterlijke functie.





coder - sluitingen in javascript - edureka

De meeste ontwikkelaars gebruiken bewust of onbewust sluitingen in JavaScript. Het biedt een betere controle over de code bij het gebruik ervan. Het is ook de meest gestelde vraag tijdens een .



Voorbeeld:

functie foo () {var x = 10 functie 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 ())

Uitgang:

10
10
10



Hier heeft u toegang tot het variabele x die is gedefinieerd in de functie foo () tot en met de functie inner (), aangezien de laatste de bereikketen van de omsluitende functie behoudt op het moment van uitvoering van de omsluitende functie. De innerlijke functie kent dus de waarde van x via zijn scopeketen. Dit is hoe u sluitingen in JavaScript kunt gebruiken.

Praktische sluitingen

Met afsluitingen kunt u de lexicale omgeving associëren met een functie die op die gegevens werkt. Dit heeft duidelijke parallellen met object georiënteerd programmeren , waar objecten ons in staat stellen de eigenschappen van het object te associëren met een of meer methoden.

Daarom kunt u een sluiting overal gebruiken waar u normaal gesproken een object zou gebruiken met slechts één methode.

Voorbeeld:

functie makeSizer (grootte) {retour functie () {document.body.style.fontSize = grootte + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

Het bovenstaande voorbeeld wordt doorgaans als callback bijgevoegd: een enkele functie die wordt uitgevoerd als reactie op de gebeurtenis.

Scope-keten

Afsluitingen in JavaScript hebben drie bereiken, zoals:

algoritmen en gegevensstructuren in java
  • Lokaal bereik
  • Buitenste Functies Bereik
  • Wereldwijde reikwijdte

Een veelgemaakte fout is het niet beseffen dat, in het geval waarin de buitenste functie zelf een geneste functie is, toegang tot de buitenste functie de omringende reikwijdte van de buitenste functie omvat, waardoor in feite een reeks functiebereiken wordt gecreëerd.

// globaal bereik var x = 10 functie som (a) {retour functie (b) {retour functie (c) {// buitenste functies bereik retour functie (d) {// lokaal bereik retour a + b + c + d + x}}}} console.log (sum (1) (2) (3) (4)) // log 20

Het kan ook worden geschreven zonder anonieme functies:

// globaal bereik var x = 10 functie som (a) {retourfunctie som2 (b) {retourfunctie som3 (c) {// buitenste functies bereik retourfunctie som4 (d) {// lokaal bereik retourneren a + b + c + d + x}}}} var s = som (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) console.log (s3) // log 20

In het bovenstaande voorbeeld is er een reeks geneste functies die allemaal toegang hebben tot het buitenste bereik van een functie. Je kunt dus zeggen dat sluitingen toegang hebben tot alle buitenste functiebereik waarin ze zijn gedeclareerd.

soorten commentaar in java

Sluiting binnen een lus

U kunt sluitingen in JavaScript gebruiken om een ​​anonieme functie op te slaan in elke index van een array . Laten we een voorbeeld nemen en kijken hoe sluitingen binnen een lus worden gebruikt.

Voorbeeld:

functie outer () {var arr = [] var i voor (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]())

Uitgang:

3
3
3
3

Hiermee zijn we aan het einde van ons artikel gekomen. Ik hoop dat je hebt begrepen hoe sluitingen in JavaScript werken en hoe ze worden gebruikt om een ​​betere controle over de code te krijgen.

Nu u meer weet over sluitingen in JavaScript, kunt u het door Edureka. Web Development Certification Training helpt u te leren hoe u indrukwekkende websites kunt maken met HTML5, CSS3, Twitter Bootstrap 3, jQuery en Google API's en deze kunt implementeren op Amazon Simple Storage Service (S3).

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte van 'Afsluitingen in JavaScript' en we nemen contact met u op.