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:

javascripttest(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:

javascripttest(
  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:

javascriptfunction 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:

javascripttest(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:

javascripttest(
  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:

javascripttest(
  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:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

function test(func1, func2) {
  console.log( func1() + func2() ); // exibirá 3
}
Задание 1

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.