⊗jsPmFNFRF 252 of 505 menu

Funkce vracející funkci v JavaScriptu

Předpokládejme, že máme tuto funkci, která vrací řetězec:

function func() { return '!'; } let result = func(); console.log(result); // vypíše '!'

Nyní místo řetězce, analogicky, vraťme anonymní funkci:

function func() { return function() { return '!'; }; } let result = func(); // v proměnné result bude funkce console.log(result); // vypíše 'function() {return '!';}'

Jak vidíte, proměnná result nyní představuje funkci. Vypišme do konzole výsledek jejího volání. Pro tento účel napíšeme kulaté závorky:

function func() { return function() { return '!'; }; } let result = func(); console.log( result() ); // vypíše '!'

Protože volání func() vrací funkci, můžeme tuto vrácenou funkci okamžitě zavolat, takto: func()() - první kulaté závorky získají výsledek funkce func (který sám je funkcí), a druhé kulaté závorky jsou aplikovány na výsledek func.

Zkusme to:

function func() { return function() { return '!'; }; } console.log( func()() ); // vypíše '!'

Vytvořte funkci func1, která když bude zavolána takto: func1()(), vrátí číslo 1. Vytvořte podobnou funkci func2, vracející číslo 2. Najděte součet výsledků těchto funkcí.

hybncsende