Funktio, joka palauttaa funktion JavaScriptissä
Oletetaan, että meillä on tällainen funktio, joka palauttaa merkkijonon:
function func() {
return '!';
}
let result = func();
console.log(result); // tulostaa '!'
Palautetaan nyt merkkijonon sijasta, analogisesti, anonyymi funktio:
function func() {
return function() {
return '!';
};
}
let result = func(); // muuttuja result sisältää funktion
console.log(result); // tulostaa 'function() {return '!';}'
Kuten näette, muuttuja result on nyt
funktio. Tulostetaan
konsoliin sen suorituksen tulos. Kirjoitetaan
sitä varten pyöreät sulkeet:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // tulostaa '!'
Koska kutsuttaessa func() palautuu funktio,
voimme heti kutsua myös tätä palautettua
funktiota, näin: func()() - ensimmäiset
pyöreät sulkeet saavat funktion
func tuloksen (joka on itse funktio),
ja toiset pyöreät sulkeet kohdistuvat tulokseen
func.
Kokeillaan:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // tulostaa '!'
Tee funktio func1, joka kun kutsutaan
näin: func1()(), palauttaa
luvun 1. Tee vastaava funktio
func2, joka palauttaa luvun 2.
Löydä näiden funktioiden tulosten summa.