0 votes

Fonctionnalités Javascript

Comment puis-je passer une fonction en tant que paramètre sans qu'elle s'exécute dans la fonction "parent" ou en utilisant eval() ? (Parce que j'ai lu que c'était risqué.)

J'ai ce qui suit :

addContact(entityId, refreshContactList());

Cela fonctionne, mais la fonction refreshContactList se déclenche lorsque la fonction est appelée plutôt que lorsqu'elle est utilisée dans la fonction. Je pourrais le contourner en utilisant eval(), mais d'après ce que j'ai lu ici, ce n'est pas la meilleure pratique. En JavaScript, comment passer une fonction en paramètre ?

0voto

aEscarcha Points 185

Pour passer une fonction en tant que paramètre sans qu'elle s'exécute immédiatement, vous pouvez simplement passer la référence de la fonction comme argument, sans les parenthèses. Dans votre exemple, vous devriez remplacer le code suivant :

addContact(entityId, refreshContactList());

par celui-ci :

addContact(entityId, refreshContactList);

Cela passera la référence de la fonction refreshContactList en tant que paramètre à la fonction addContact, plutôt que de l'appeler immédiatement.

Dans la fonction addContact, vous pouvez ensuite appeler la fonction passée comme paramètre en utilisant l'opérateur de parenthèse () :

function addContact(entityId, callback) { 
  // faire quelque chose ici 
  // ...      
  // appel de la fonction passée en paramètre   
  callback(); 
 }

Ici, la fonction callback sera exécutée lorsque vous appelez callback(). Vous pouvez également passer des arguments supplémentaires à la fonction callback si nécessaire :

function addContact(entityId, callback, arg1, arg2) {
   // faire quelque chose ici
   // ...    
   // appel de la fonction passée en paramètre avec des arguments supplémentaires
   callback(arg1, arg2); 
 }

En résumé, pour passer une fonction en paramètre en JavaScript sans qu'elle s'exécute immédiatement, vous pouvez simplement passer la référence de la fonction sans les parenthèses, puis l'appeler plus tard en utilisant l'opérateur de parenthèse () si nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X