传递带有参数的函数

Passing a function with parameters

本文关键字:函数 参数      更新时间:2023-09-26

我想将一个带参数的函数传递到另一个函数中,而不需要对其求值。

这种方法不起作用:

function first (id) {...}
function second (func) {
    func();
} 
second(first(id)); 

这个方法可以,但我不能使用它,因为参数的数量并不总是相同的:

function first (id) {...}
function second (func, id) {
    func(id);
}
second(first, someId);

您可以将#bind用于部分应用程序:

second( first.bind(null, id) )

创建一个包装函数:

second(function () { first(my, parameters); })

如果您想向函数传递可变数量的参数,可以使用apply,如下所示:

function runit(func, arrayofparam) {
   func.apply(this,arrayofparam);
}

所有这些文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

这个怎么样?

function func1(param1, param2){
    console.log("func1");
    console.log(param1);
    console.log(param2);
}
function func2(param1){
    console.log("func2");
    console.log(param1);
}
function executor(func, params) {
     //This do all the trick :)
     func.apply(this, params); 
}
executor(func1, ["first", "second"]);
executor(func2, ["lonely"]);

这是一个工作示例:https://jsfiddle.net/xrhkoL5a/(使用浏览器控制台查看结果)。