如何将无限数量的参数应用于作为另一个函数的参数的函数?
这就是我的尝试:
var callIt = function(fn) {
for(var i = 1; arguments.length + 1; i++){
return fn(arguments[i]);
}
};
练习中有一个功能用于表达所要求的内容:
callIt(sumAll, 1);
也许我喝了太多啤酒......
callIt(sumAll, 2,3) // 5 is expected but I got 2
答案 0 :(得分:2)
制作argument an array,删除第一个元素,使用apply
。
var callIt = function(fn) {
var args = [].slice.call(arguments);
return fn.apply(null, args.slice(1));
}
或者使用您的代码:
var callIt = function(fn) {
var args = [];
for(var i = 1; i < arguments.length; i++){
args.push(arguments[i]);
}
return fn.apply(null, args);
};
答案 1 :(得分:0)
function show()
{
var args = Array.prototype.slice.call(arguments,1);
arguments[0](args);
}
答案 2 :(得分:0)
第一次迭代时callIt(sumAll, 2,3) // 5 is expected but I got 2
javascript
循环内问题return
的 for
。此外,for
循环没有会返回condition
的{{1}}。您可以使用false
将函数参数与传递给rest parameter
callIt