158 votes

Tableau de fonctions Javascript

 var array_of_functions = [
    first_function('a string'),
    second_function('a string'),
    third_function('a string'),
    forth_function('a string')
]

array_of_functions[0];
 

Cela ne fonctionne pas comme prévu car chaque fonction du tableau est exécutée lors de la création du tableau.

Quelle est la bonne manière d’exécuter une fonction du tableau en faisant:

 array_of_functions[0];  // or, array_of_functions[1] etc.
 

Merci!

273voto

Darin Dimitrov Points 528142
 var array_of_functions = [
    first_function,
    second_function,
    third_function,
    forth_function
]
 

et puis quand vous voulez exécuter une fonction donnée dans le tableau:

 array_of_functions[0]('a string');
 

131voto

pjcabrera Points 313

Je pense que c’est ce que l’affiche originale voulait accomplir:

 var array_of_functions = [
    function() { first_function('a string') },
    function() { second_function('a string') },
    function() { third_function('a string') },
    function() { fourth_function('a string') }
]

for (i = 0; i < array_of_functions.length; i++) {
    array_of_functions[i]();
}
 

J'espère que cela aidera les autres (comme moi, il y a 20 minutes) à rechercher n'importe quel indice sur la façon d'appeler les fonctions JS dans un tableau.

29voto

jlbruno Points 2026

Sans plus de détails sur ce que vous essayez d'accomplir, nous devinons un peu. Mais vous pourrez peut-être vous en tirer en utilisant la notation objet pour faire quelque chose comme ça ...

 var myFuncs = {
  firstFunc: function(string) {
    // do something
  },

  secondFunc: function(string) {
    // do something
  },

  thirdFunc: function(string) {
    // do something
  }
}
 

et d'appeler l'un d'eux ...

 myFuncs.firstFunc('a string')
 

19voto

Gus Points 133

Je voudrais compléter ce fil en postant un moyen plus simple d’exécuter diverses fonctions dans un tableau à l’aide de la méthode shift() Javascript décrite à l’origine ici.

   var a = function(){ console.log("this is function: a") }
  var b = function(){ console.log("this is function: b") }
  var c = function(){ console.log("this is function: c") }

  var foo = [a,b,c];

  while (foo.length){
     foo.shift().call();
  }
 

17voto

Robin Points 10884

Ou juste:

 var myFuncs = {
  firstFun: function(string) {
    // do something
  },

  secondFunc: function(string) {
    // do something
  },

  thirdFunc: function(string) {
    // do something
  }
}
 

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