Funktsioon, mis tagastab funktsiooni JavaScriptis
Olgu meil selline funktsioon, mis tagastab stringi:
function func() {
return '!';
}
let result = func();
console.log(result); // kuvab '!'
Tagastame nüüd analoogia põhjal stringi asemel anonüümse funktsiooni:
function func() {
return function() {
return '!';
};
}
let result = func(); // muutuja result sisu on funktsioon
console.log(result); // kuvab 'function() {return '!';}'
Nagu näete, on muutuja result nüüd
funktsioon. Väljutame konsooli
tema töö tulemuse. Kirjutame selleks
talle ümarsulud:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // kuvab '!'
Kuna func() kutsumine tagastab funktsiooni,
siis võime kohe ka kutsuda seda tagastatud
funktsiooni, niimoodi: func()() - esimesed
ümarsulud saavad funktsiooni func
tulemuse (mis ise on funktsioon),
ja teised ümarsulud rakenduvad func
tulemusele.
Proovime:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // kuvab '!'
Tehke funktsioon func1, mis olles
kutsutud niimoodi: func1()(), tagastab
numbri 1. Tehke analoogiline funktsioon
func2, mis tagastab numbri 2.
Leidke nende funktsioonide tulemuste summa.