如何应用传递给函数的任意数量的参数,该函数是JavaScript中另一个函数的参数?

如何应用传递给函数的任意数量的参数,该函数是JavaScript中另一个函数的参数?,javascript,Javascript,如果一个函数是另一个函数的参数,您将如何对该函数应用数量不限的参数 这就是我所尝试的: 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

如果一个函数是另一个函数的参数,您将如何对该函数应用数量不限的参数

这就是我所尝试的:

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
制作,移除第一个元素,使用
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);
};
var callIt=函数(fn){
var args=[];
for(var i=1;i
制作,移除第一个元素,使用
应用

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);
};
var callIt=函数(fn){
var args=[];
for(var i=1;i
javascript
在问题
中返回
s,在第一次迭代时从
for
循环中返回。另外,
循环的
没有返回
false
条件。您可以利用
rest参数
将函数参数与传递给
callIt的其余参数分开

var callIt=function(fn,…args){
var-res=0;
对于(变量i=0;i
javascript
在问题
中返回
s,在第一次迭代时从
for
循环中返回。另外,
循环的
没有返回
false
条件。您可以利用
rest参数
将函数参数与传递给
callIt的其余参数分开

var callIt=function(fn,…args){
var-res=0;
对于(变量i=0;i控制台日志(结果)可能返回fn(参数[i]);`解决你的问题?谢谢@StellaMaris,它让这个问题通过了
callIt(sumAll,1)
,但不是
callIt(sumAll,2,3)
callIt(sumAll,4,5,6)
:)如果这是一个家庭作业练习,第一段会有提示。。。如果那一段是你自己写的,你已经暗示了解决方案;)我建议您应用它。我认为应用是针对数组的,还是也包含类似数组的对象?该函数将是无用的,因为您可以执行较短且不需要包装的
sumAll(1,2,3,4)
。可能返回fn(参数[I]);`解决你的问题?谢谢@StellaMaris,它让这个问题通过了
callIt(sumAll,1)
,但不是
callIt(sumAll,2,3)
callIt(sumAll,4,5,6)
:)如果这是一个家庭作业练习,第一段会有提示。。。如果那一段是你自己写的,你已经暗示了解决方案;)我建议你
apply
它。我认为
apply
是针对数组的,还是也包含类似数组的对象?这个函数没有用,因为你可以做
sumAll(1,2,3,4)
它比较短,不需要包装器。谢谢@Lihau的工作。我喜欢第一个,虽然很优雅!由于您已经在使用slice将参数对象转换为数组,
返回fn.apply(null,[].slice.call(arguments,1))会更简洁。谢谢@Lihau的帮助。我喜欢第一个,虽然很优雅!由于您已经在使用slice将参数对象转换为数组,
返回fn.apply(null,[].slice.call(arguments,1))将更加简洁。