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

时间:2016-09-19 00:29:59

标签: 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 but I got 2

3 个答案:

答案 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