Javascript 调用函数insight函数/参数

Javascript 调用函数insight函数/参数,javascript,callback,arguments,concat,Javascript,Callback,Arguments,Concat,我试图编写一个函数,将函数作为参数(尽可能多)并返回它们。函数funcArg应返回“Called me”。我使用了Array.prototype.slice.call(参数);创建一个数组,但我不知道如何调用该数组中的die函数。有什么想法吗?谢谢 var caller = function() { return "Called "; }; var adder = function() { return " me"; }; var funcArgs = function() { va

我试图编写一个函数,将函数作为参数(尽可能多)并返回它们。函数funcArg应返回“Called me”。我使用了Array.prototype.slice.call(参数);创建一个数组,但我不知道如何调用该数组中的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);

如果您有一组函数,可以使用
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 functions = [caller, adder];
  var result = '';
  result += functions[0](); // caller();
  result += functions[1](); // adder();
  return result;
};

谢谢!!你知道我将如何在args上使用concat方法吗?你想用
concat
做什么。期望的结果是什么?“Called”和将返回的“me”假设在一行中,就像Called me一样,而不是在单独的行中,这是我的第二个函数所做的。。使用
reduce
的那个。这也是@Mike C的函数所做的(它们是相同的函数)是的,我只是重复检查了一下,它确实做了。非常感谢。你能解释一下吗:在这种情况下,acc是第一个函数,fn是第二个,为什么只调用fn(fn()),而不调用第一个(acc)-我肯定是的,我只是想理解代码谢谢!然而,这个(最后一个)解决方案只有在我知道我会有多少个参数时才有效。@learningcoding这不是一个解决方案,他正在更详细地解释第一个方法是如何工作的。@learningcoding最后一个方法不是一个解决方案。这是对调用
funcArgs(调用者、加法器)
时发生的情况的解释。当编写这样的代码时,理解它是如何工作的是很重要的。
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;
};