Mi az áramkör javascript

Ez egy meglehetősen egyszerű téma, de szükség megértést. Először is, nézzük meg, mi történik a függvény belsejében.
Mi folyik itt, és mit LexicalEnvironment. Nézzünk szembe a tényekkel.
Most jön a következő példát. Mondd, mi jelenik meg ebben az esetben?
Gondolod? Azt hiszem, a többség azt válaszolta, hogy a 3-as szám jelenik meg, és ez a helyes válasz, de meg tudja mondani, hogy a tolmács értesült a változó b. Végtére is, ez nem az a függvény törzse. Ha nem, akkor menjünk foglalkozik.
FONTOS! Tartsuk szem előtt, hogy az ingatlan [[Scope]] van beállítva az a hely, ahol a funkció nyilvánították, és nem okozott, ezért az alábbi kódot jeleníti meg a 3-as szám, nem 5, mivel egyesek szerint.
bar b = 2;
funkció x (a) riasztási (a + b);
>
Ez volt minden, csak egy előjáték, hogy megértsük, hogyan működik mindez, és könnyebb megérteni, hogy az áramkör működik. És most folytassa közvetlenül a cikk témáját.
Mint már mondtam, LexicalEnvironment objektum megszűnik minden végrehajtása után a funkció és újra létrejön a visszahívás. Azonban, ha meg akarjuk menteni az adatokat? Ie szeretnénk minden meg van írva LexicalEnvironment most megőrzött és használjuk fel a következő hívás? Ez az, és vannak áramkörök.
var func = üdvözlő (# '# Nicholas');
üdvözlő = null;
func ();
Nos, nézzük, hogy meghatározza, hogy mi egy ilyen áramkört.
Circuit - funkció együtt az összes változót, hogy rendelkezésre állnak neki.
funkció makeCounter () var CURRENTCOUNT = 0;
visszatérő funkció () CURRENTCOUNT ++;
visszatérés CURRENTCOUNT;
>;
>
var számláló = makeCounter ();
számláló ();
számláló ();
riasztás (számláló ()); // 3