我想将带参数的函数传递给另一个函数而不进行评估。
这种方法不起作用:
function first (id) {...}
function second (func) {
func();
}
second(first(id));
这种方法有,但我不能使用它,因为参数的数量并不总是相同的:
function first (id) {...}
function second (func, id) {
func(id);
}
second(first, someId);
答案 0 :(得分:2)
您可以使用#bind
进行部分申请:
second( first.bind(null, id) )
答案 1 :(得分:0)
创建包装函数:
second(function () { first(my, parameters); })
答案 2 :(得分:0)
如果你想将一个可变数量的参数传递给一个函数,你可以使用apply,如下所示:
function runit(func, arrayofparam) {
func.apply(this,arrayofparam);
}
所有这些文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
答案 3 :(得分:0)
这是怎么回事?
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/(使用浏览器控制台查看结果)。