使用所有参数运行回调

Run callback with all arguments

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

举个例子:

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/

这个应该能满足您的需求:

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

Fiddle

ECMAScript6 引入了所谓的rest parameter. It lets you refer to all remaining arguments that are not explicitly listed. Together with .apply,你的函数看起来像

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

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

您现在可以通过 6to5.

等转译器使用 ES6 功能