Функција која враћа функцију у 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 сада
представља функцију. Хајде да испишемо
у конзолу резултат њеног рада. За то напишимо
јој заграде:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // исписаће '!'
Пошто позив func() враћа функцију,
онда можемо одмах и да позовемо ту враћену
функцију, овако: func()() - прве
заграде добијају резултат функције
func (који сам је функција),
а друге заграде се примењују на резултат
func.
Хајде да пробамо:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // исписаће '!'
Направите функцију func1, која ће када се
позове овако: func1()(), вратити
број 1. Направите аналогну функцију
func2, која враћа број 2.
Пронађите збир резултата ових функција.