function outerFun()
{
var a=0;
function innerFun()
{
a++;
alert(a);
}
}
innerFun()
Codul anterior este greșit. Domeniul de aplicare al InnerFun () este în exteriorfun () și îl cheamă din exteriorfun () este greșit.
Treceți la următoarele, care este închiderea:
function outerFun()
{
var a=0;
function innerFun()
{
a++;
alert(a);
}
return innerFun; // nota aquí
}
var obj=outerFun();
obj (); // el resultado es 1
obj (); // El resultado es 2
var obj2=outerFun();
obj2 (); // el resultado es 1
obj2 (); // El resultado es 2
Ce este o închidere?
Când se face referire la o funcție internă, la îndemânare, este creată o închidere a funcției interne. Dacă funcția internă se referă la o variabilă situată într-o funcție externă, aceste variabile nu vor fi stocate în memorie după ce se numește funcția externă. Eliberați-vă că închiderile au nevoie de ele.
————————————– ————————————————————————— ————–
Să vedem un alt exemplu.
Rezultatul este de 0,4. Deoarece cuvântul cheie VAR este utilizat în cadrul funcției pentru a menține gama unei Outfun interne ().
Vedeți din nou următorul cod:
function outerFun()
{
// no var
a =0;
alert(a);
}
var a=4;
outerFun();
alert(a);
Rezultat este 0 , 0 Este rar, de ce?
Lanțul de aplicare este un termen care descrie un traseu de-a lungul căruia poate fi determinată valoarea unei variabile. Când este efectuată la = 0, deoarece cuvântul cheie VAR nu este utilizat, operația de atribuire va urma lanțul de interval la var A = 4; Și își schimbă valoarea.