Funkcija koja vraća funkciju u JavaScript-u
Recimo da imamo ovakvu funkciju koja vraća string:
function func() {
return '!';
}
let result = func();
console.log(result); // ispisaće '!'
Sada, po analogiji, umesto stringa, hajde da vratimo anonimnu funkciju:
function func() {
return function() {
return '!';
};
}
let result = func(); // u promenljivoj result će biti funkcija
console.log(result); // ispisaće 'function() {return '!';}'
Kao što vidite, promenljiva result sada
predstavlja funkciju. Hajde da ispišemo
u konzolu rezultat njenog rada. Da bismo to uradili, napišimo
joj okrugle zagrade:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // ispisaće '!'
Pošto poziv func() vraća funkciju,
možemo odmah i pozvati tu vraćenu
funkciju, ovako: func()() - prve
okrugle zagrade dobijaju rezultat funkcije
func (koji je sam po sebi funkcija),
a druge okrugle zagrade primenjuju se na rezultat
func.
Hajde da probamo:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // ispisaće '!'
Napravite funkciju func1, tako da kada se
pozove ovako: func1()(), vrati
broj 1. Napravite sličnu funkciju
func2, koja vraća broj 2.
Pronađite zbir rezultata ovih funkcija.