Տեղական հաշվիչ փոփոխականը JavaScript-ում
Դիտարկենք հետևյալ կոդը.
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // կարտածի 1
test()(); // կարտածի 1
Ինչու՞ է միշտ արտածվելու 1 թիվը: Սա
հասկանալու համար եկեք վերագրենք մեր կոդը
այլ կերպ.
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! առաջին ֆունկցիա
func1(); //կարտածի 1
let func2 = test(); //!! երկրորդ ֆունկցիա
func2(); //կարտածի 1
Այսինքն, test ֆունկցիայի ամեն կանչ
այսպես. test()(), ստեղծում է իր
ֆունկցիան իր սեփական փակումով և անմիջապես կանչում է
այդ ֆունկցիան:
Որոշեք, առանց կոդը գործարկելու, թե ինչ կարտածվի կոնսոլում.
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Որոշեք, առանց կոդը գործարկելու, թե ինչ կարտածվի կոնսոլում.
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();