JavaScriptда функция қайтарадиган функция
Фараз қилайлик, бизда мана бу каби сатрни қайтарадиган функция бор:
function func() {
return '!';
}
let result = func();
console.log(result); // '!' чиқади
Энди ўхшаш тарзда, сатр ўрнига, номсиз функцияни қайтарамиз:
function func() {
return function() {
return '!';
};
}
let result = func(); // result ўзгарувчисида функция бўлади
console.log(result); // function() {return '!';} чиқади
Кўриб турганингиздек, result ўзгарувчиси
энди функцияни ифодалайди. Кeling, унинг ишлаши
натижасини консолга чиқарайлик. Бунинг учун унга
айлана скобкалар ёзамиз:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // '!' чиқади
func() чақируви функцияни қайтаргани сабабли,
биз қайтарилган функцияни darhol chaqirishimiz mumkin, мана бу курнида: func()() - биринчи
айлана скобкалар func функциясининг натижасини
олади (у ўзи функция бўлган),
иккинчи айлана скобкалар эса func натижасига
қўлланилади.
Келиб, синаб кўрамиз:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // '!' чиқади
func1 функциясини яратинг, у шундай чақирилганда: func1()(), 1 sonini қайтарсин. Шунингдек, 2 sonini қайтарадиган func2 функциясини яратинг. Бу функциялар натижалари йиғиндисини топинг.