Passage de fonctions en paramètres en JavaScript

Les fonctions, tout comme les nombres, les chaînes de caractères et les tableaux, peuvent être passées en paramètres à d'autres fonctions.

Examinons cela plus en détail avec un exemple pratique. Supposons que nous ayons une fonction test prenant deux paramètres :

javascripttest(paramètre1, paramètre2);

Passons en premier paramètre de la fonction test une fonction anonyme retournant 1, et en deuxième paramètre - une fonction anonyme retournant 2 :

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

Le code ci-dessus ne fonctionne pas encore, car nous n'avons pas créé la fonction elle-même. Faisons cela :

javascriptfunction test(func1, func2) {
  
}

Lors de la définition de la fonction, nous avons spécifié deux paramètres - func1 et func2. Ces paramètres ne savent rien de ce qui leur sera passé. Nous pourrions, par exemple, passer des nombres :

javascripttest(1, 2); // appel de la fonction

function test(func1, func2) {
  console.log(func1); // affichera 1
  console.log(func2); // affichera 2
}

Ou nous pouvons passer des fonctions :

javascripttest(
  function() {return 1;}, // premier paramètre
  function() {return 2;}  // deuxième paramètre
);

function test(func1, func2) {
  console.log(func1); // affichera 'function() {return 1;}'
  console.log(func2); // affichera 'function() {return 2;}'
}

Comme vous le voyez, le code source des fonctions est maintenant affiché dans la console. Faisons en sorte qu'il affiche leurs résultats. Pour cela, ajoutons des parenthèses aux fonctions :

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

function test(func1, func2) {
  console.log( func1() ); // affichera 1
  console.log( func2() ); // affichera 2
}

Affichons dans la console la somme des résultats de la première et de la deuxième fonction :

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

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

Créez une fonction test prenant en paramètres 3 fonctions. Passez-lui en premier paramètre une fonction retournant 1, en deuxième - une fonction retournant 2, en troisième - une fonction retournant 3. Affichez dans la console la somme des résultats des fonctions.