Si vous souhaitez passer une fonction de référence par son nom sans les parenthèses:
function foo(x) {
alert(x);
}
function bar(func) {
func("Hello World!");
}
//alerts "Hello World!"
bar(foo);
Mais parfois, vous pourriez voulez passer une fonction avec des arguments inclus, mais ne pas l'avoir appelé, jusqu'à ce que le callback n'est appelé. Pour ce faire, lors de l'appel, il suffit de l'envelopper dans une fonction anonyme, comme ceci:
function foo(x) {
alert(x);
}
function bar(func) {
func();
}
//alerts "Hello World!" (from within bar AFTER being passed)
bar(function(){ foo("Hello World!") });
Si vous préférez, vous pouvez également utiliser l' appliquer de fonction et un troisième paramètre qui est un tableau d'arguments, comme tel:
function eat(food1, food2)
{
alert("I like to eat " + food1 + " and " + food2 );
}
function myFunc(callback, args)
{
//do stuff
//...
//execute callback when finished
callback.apply(this, args);
}
//alerts "I like to eat pickles and peanut butter"
myFunc(eat, ["pickles", "peanut butter"]);