传递带参数的函数

时间:2015-04-01 14:04:49

标签: javascript function parameters

我想将带参数的函数传递给另一个函数而不进行评估。

这种方法不起作用:

function first (id) {...}

function second (func) {
    func();
} 

second(first(id)); 

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

function first (id) {...}

function second (func, id) {
    func(id);
}

second(first, someId);

4 个答案:

答案 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/(使用浏览器控制台查看结果)。