Função que retorna uma função em JavaScript
Suponha que temos uma função como esta, que retorna uma string:
function func() {
return '!';
}
let result = func();
console.log(result); // exibirá '!'
Agora, em vez de uma string, por analogia, vamos retornar uma função anônima:
function func() {
return function() {
return '!';
};
}
let result = func(); // a variável result será uma função
console.log(result); // exibirá 'function() {return '!';}'
Como você pode ver, a variável result agora
é uma função. Vamos exibir no console
o resultado de sua execução. Para isso, escrevemos
parênteses para ela:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // exibirá '!'
Como a chamada func() retorna uma função,
podemos chamar imediatamente essa função
retornada, assim: func()() - os primeiros
parênteses obtêm o resultado da função
func (que é uma função),
e os segundos parênteses são aplicados ao resultado
de func.
Vamos tentar:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // exibirá '!'
Crie uma função func1 que, quando
chamada assim: func1()(), retorne
o número 1. Crie uma função similar
func2, retornando o número 2.
Encontre a soma dos resultados dessas funções.