Funkcija, ki vrača funkcijo v JavaScript
Recimo, da imamo tukaj takšno funkcijo, ki vrača niz:
function func() {
return '!';
}
let result = func();
console.log(result); // izpiše '!'
Poglejmo zdaj namesto niza, po analogiji, vrnimo anonimno funkcijo:
function func() {
return function() {
return '!';
};
}
let result = func(); // v spremenljivki result bo funkcija
console.log(result); // izpiše 'function() {return '!';}'
Kot vidite, spremenljivka result zdaj
predstavlja funkcijo. Izpišimo
v konzolo rezultat njenega delovanja. Za to napišimo
ji okrogle oklepaje:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // izpiše '!'
Ker klic func() vrne funkcijo,
potem lahko takoj tudi pokličemo to vrnjeno
funkcijo, takole: func()() - prvi
okrogli oklepaji pridobijo rezultat funkcije
func (ki je sam funkcija),
drugi okrogli oklepaji pa se uporabijo za rezultat
func.
Poskusimo:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // izpiše '!'
Naredite funkcijo func1, ki bo ob
klicu takole: func1()(), vrnila
število 1. Naredite podobno funkcijo
func2, ki vrne število 2.
Poiščite vsoto rezultatov teh funkcij.