Passando funções como parâmetros em JavaScript
Funções, assim como números, strings e arrays, podem ser passadas como parâmetros para outras funções.
Vamos examinar mais detalhadamente com um exemplo prático.
Suponha que temos uma função test que recebe
dois parâmetros:
test(parâmetro1, parâmetro2);
Vamos passar para o primeiro parâmetro da função test
uma função anônima que retorna
1, e para o segundo parâmetro - uma função
anônima que retorna 2:
test(
function() {return 1;},
function() {return 2;}
);
O código acima ainda não funciona, pois não criamos a própria função. Vamos fazer isso:
function test(func1, func2) {
}
Ao definir a função, especificamos dois parâmetros
- func1 e func2. Esses parâmetros
não sabem o que será passado para eles.
Podemos, por exemplo, passar números:
test(1, 2); // chamamos a função
function test(func1, func2) {
console.log(func1); // exibirá 1
console.log(func2); // exibirá 2
}
Ou podemos passar funções:
test(
function() {return 1;}, // primeiro parâmetro
function() {return 2;} // segundo parâmetro
);
function test(func1, func2) {
console.log(func1); // exibirá 'function() {return 1;}'
console.log(func2); // exibirá 'function() {return 2;}'
}
Como você pode ver, agora o código-fonte das funções é exibido no console. Vamos fazer com que ele exiba seus resultados. Para isso, adicionaremos parênteses às funções:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // exibirá 1
console.log( func2() ); // exibirá 2
}
Vamos exibir no console a soma dos resultados da primeira e da segunda função:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // exibirá 3
}
Crie uma função test que receba
3 funções como parâmetros. Passe para
ela, como primeiro parâmetro, uma função que retorna
1, como segundo - uma função que retorna
2, e como terceiro - uma função que retorna
3. Exiba no console a soma dos resultados das
funções.