Cauta rapid aici ↑

JavaScript closure

Dupa cum deja stiti in JavaScript exista variabile globale si variabile locale. Diferenta dintre ele este ca orice variabila declarata in interiorul unei functii este variabila locala iar orice variabila declarata in afara unei functii este variabila globala. Exista o exceptie si daca vom declara o variabila in interiorul unei functii fara cuvantul cheie var , aceasta devine o variabila globala si poate fi accesata si in acest fel ii pot fi modificate valorile si nu intotdeauna ne dorim acest lucru. Variabila locala poate avea acces la orice variabila din interiorul unei functii, daca acestea mai exista.

Termenul de closure vine de la functii iar acestea pot mosteni diferite variabile in mediul lor cu scopul de a lucra cu dalele pe care aceste variabile le contin. Atunci cand declaram o functie ca argument pentru o alta functie, aceasta va fi invocata mai tarziu si ca prin minune aceasta isi va aminti contextul in care a fost declarata impreuna cu variabilele disponibile in acel context si in contextul functiei parinte. In JavaScript functiile reprezinta constructori pentru diferite obiecte ceea ce inseamna ca putem declara o functie in interiorul altei functii pe post de argument iar aceasta functie va fi executata mai tarziu, cand vom apela functia parinte.

Toate functiile au ca setare de baza sa returneze undefined insa noi putem sa returnam la sfarsitul scriptului dintr-o functie orice tip de date ne dorim.