JavaScript да Closure ва Функцияни Жойида Чакириш
Сиз билланоқ, номсиз функцияни жойида чақириб, унинг иш натижасини қандайдир ўзгарувчига тенглаш мумкин:
let result = function() {
return '!';
}();
console.log(result); // '!' чиқади
Кўпинча, жойида чақирилаётган функцияни шундай ҳолда айлана рақамли қавс ичига оладилар, гарчи бунда зарурат бўлмаса-да. Бу функциянинг жойида чақирилаётганини дарҳол кўриш учун қилинади:
let result = (function() {
return '!';
})();
console.log(result); // '!' чиқади
Энди жойида чақирилган функциянинг натижаси номсиз функция бўлсин:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // '!' чиқади
Қайтарилаётган функция closure да num
ўзгарувчисини сақласин:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Агар num++ қўшилса, func функцияси
тайёр ҳисобловчига айланади:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); // 1 чиқади
func(); // 2 чиқади
func(); // 3 чиқади
func(); // 4 чиқади
func(); // 5 чиқади
Менинг кодимга қарамай, ўзингиз ҳам шундай ҳисобловчини амалга оширинг.
Ҳисобловчининг ишини шундай модификация қилингки,
у 5 гача ҳисобласин, сўнг ҳисоб бошланғичдан
бошлансин.