使用所有参数运行回调

时间:2015-01-06 14:04:54

标签: javascript callback

当我不知道提供了多少参数时,如何运行带有所有参数的回调函数。

采用以下示例:

function tryMe (param1, param2) {
    alert(param1 + " and " + param2);
}

function callbackTester (callback) {
    callback (arguments[1], arguments[2]);
}

callbackTester (tryMe, "hello", "goodbye");

callbackTester (tryMe, "hello", "goodbye", "seeYouLater");

如何从callbackTester()函数运行回调,以便它会自动调用它的所有参数?

小提琴:http://jsfiddle.net/qj1rs29q/

2 个答案:

答案 0 :(得分:5)

这个应该符合您的需求:

function callbackTester() {
    var args = Array.prototype.slice.call(arguments),
        callback = args.shift();
    callback.apply(this, args);
}

Fiddle

答案 1 :(得分:1)

ECMAScript6引入了所谓的rest parameter。它允许您引用未明确列出的所有剩余参数。与.apply一起,您的功能将如下所示

function callbackTester (callback, ...args) {
    callback.apply(null, args);
}

// callback = tryme | args = ["hello", "goodbye"]
callbackTester(tryMe, "hello", "goodbye"); 

您今天可以使用ES6功能,例如6to5