JavaScript-те жабылулар арқылы санағыш
Қарастырған кодтымызды қайта жазайық,
олай етіп, қайтарылатын функция әр жолы
num айнымалысының мәнін бірге
арттыратын болсын:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // бірді қосамыз
}
}
let func = test();
func функциясын әр шақыру
консольге жаңа мән шығаратын болады:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //1 шығарады
func(); //2 шығарады
func(); //3 шығарады
func(); //4 шығарады
func(); //5 шығарады
Функция шақыруларының санағышын жүзеге асырдық,
жабылуды пайдаланып (дәлірек айтқанда функциямыздың
жабылуынан алынған num айнымалысын пайдаланып).
test функциясын әр шақыру
жаңа функцияны қайтаратынын ескеріңіз, оның
өз жабылуы болады. Яғни әртүрлі санағыштар
тәуелсіз жұмыс істейді:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // бірінші санағыш
func1(); //1 шығарады
func1(); //2 шығарады
let func2 = test(); // екінші санағыш
func2(); //1 шығарады
func2(); //2 шығарады
Бірдей num айнымалысы
әртүрлі функциялар үшін әртүрлі мәнге ие болады!
Яғни егер test функциясын
екі рет шақырсақ, онда одан алынған функциялар
тәуелсіз жұмыс істейді және осы
функциялардың әрқайсысының өз тәуелсіз
num айнымалысы болады.
Өздігіңізше, менің кодымға қарамастан, жабылулар арқылы жұмыс істейтін функция шақыру санағышын жүзеге асырыңыз.
Функция жабылуда 10 санын сақтасын.
Функцияны әр шақыру бұл санды
1-ге азайтып,
азайтылған санды консольге шығаратын етіп жасаңыз.
Алдыңғы тапсырманы өзгертіңіз,
санау 0-ге жетсін, содан кейін әрбір
келесі функция шақыруы консольге
санау аяқталғаны туралы хабарлайтын болсын.