Care este circuitul în JavaScript

Care este circuitul în JavaScript

Aceasta este o temă destul de simplu, dar este nevoie de înțelegere. În primul rând, să ne uităm la ceea ce se intampla in interiorul functiei.

Ce se întâmplă aici și ce LexicalEnvironment. Să recunoaștem.

Acum am ajuns la următorul exemplu. Spune-mi, ce va fi afișat în acest caz?

Crezi? Cred că cea mai mare parte a răspuns că numărul 3 este afișat, și este răspunsul corect, dar ne puteți spune cum interpretul a aflat despre variabila b. La urma urmei, nu este în corpul funcției. Dacă nu, să se ocupe.

IMPORTANT! Rețineți că proprietatea [[Domeniul]] este setat pe locul unde a fost declarată funcția, și nu sunt cauzate de, motiv pentru care codul de mai jos afișează numărul 3, nu 5, așa cum unii ar putea crede.

bar b = 2;
Funcția x (a) alert (a + b);
>

A fost doar un preludiu pentru tine de a înțelege cum funcționează, și de a face mai ușor de înțeles cum funcționează de circuit. Și acum trece direct la subiectul articolului.

Așa cum am spus, LexicalEnvironment obiect este distrus după fiecare execuție a funcției și a creat din nou cu retragerea. Cu toate acestea, dacă dorim să salvați datele? Ie ne dorim tot ce este scris în LexicalEnvironment acum conservate și a fost utilizat pentru apelul următor? Este pentru aceasta și există circuite.

var = func salutare ( '# Nicholas' #);
salut = null;
func ();

Deci, să dea o definiție a ceea ce un astfel de circuit.

Circuit - funcționează împreună cu toate variabilele care sunt disponibile pentru ei.

Funcția makeCounter () var CURRENTCOUNT = 0;

Funcția de retur () CURRENTCOUNT ++;
CURRENTCOUNT reveni;
>;
>

var counter = makeCounter ();
contor ();
contor ();
alert (contor ()); // 3