Saltar al contenido

Pasar una función de JavaScript como parámetro

octubre 17, 2021
apple touch icon@2

Si desea pasar una función, simplemente haga referencia a ella por su nombre sin los paréntesis:

function foo(x) {
    alert(x);
}
function bar(func) {
    func("Hello World!");
}

//alerts "Hello World!"
bar(foo);

Pero a veces es posible que desee pasar una función con argumentos incluidos, pero no llamarlo hasta que se invoque la devolución de llamada. Para hacer esto, al llamarlo, simplemente envuélvalo en una función anónima, como esta:

function foo(x) {
   alert(x);
}
function bar(func) {
   func();
}

//alerts "Hello World!" (from within bar AFTER being passed)
bar(function(){ foo("Hello World!") });

Si lo prefiere, también puede utilizar el solicitar función y tener un tercer parámetro que es una matriz de los argumentos, como tal:

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"]); 

close