使用所有参数运行回调
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()
函数运行回调,以便它自动调用其所有参数?
这个应该能满足您的需求:
function callbackTester() {
var args = Array.prototype.slice.call(arguments),
callback = args.shift();
callback.apply(this, args);
}
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 功能
当我不知道提供了多少参数时,我如何运行一个带有所有参数的回调函数。
举个例子:
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()
函数运行回调,以便它自动调用其所有参数?
这个应该能满足您的需求:
function callbackTester() {
var args = Array.prototype.slice.call(arguments),
callback = args.shift();
callback.apply(this, args);
}
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 功能