我正在尝试编写一个函数,它将函数作为参数(尽可能多)并返回它们。函数funcArg应该返回'叫我'。我使用了Array.prototype.slice.call(arguments);创建一个数组,但我不知道如何在该数组中调用die函数。有任何想法吗?谢谢!
var caller = function() {
return "Called ";
};
var adder = function() {
return " me";
};
var funcArgs = function() {
var myArray = Array.prototype.slice.call(arguments);
}
funcArgs(caller);
funcArgs(calleradder);
答案 0 :(得分:2)
您可以使用reduce
执行此操作。
var funcArgs = function() {
var functions = Array.prototype.slice.call(arguments);
return functions.reduce(function(total, f) {
return total + f();
}, '');
};
如果你从一系列函数开始,它的工作方式。然后我们一次完成一个函数。然后我们调用该函数并将其附加到前一个函数的结果中。将其分解为更简单的代码将如下所示:
var funcArgs = function() {
var functions = [caller, adder];
var result = '';
result += functions[0](); // caller();
result += functions[1](); // adder();
return result;
};
答案 1 :(得分:1)
如果您有一组函数,可以使用forEach
循环遍历它们。
var caller = function() {
return "Called "
}
var adder = function() {
return " me"
}
var funcArgs = function() {
var myArray = Array.prototype.slice.call(arguments);
myArray.forEach(function (fn) {
console.log(fn())
})
}
funcArgs(caller, adder); // "Called me"
如果你想实际返回值,而不仅仅是console.log它们,你可以使用reduce
来返回连接的字符串(或其他任何内容)
var funcArgs = function() {
var myArray = Array.prototype.slice.call(arguments);
return myArray.reduce(function (acc, fn) {
return acc + fn()
}, '')
}