Функција што враќа функција во 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.
Пронајдете го збирот на резултатите од овие функции.