调用函数洞察函数/参数

时间:2016-05-19 21:33:35

标签: javascript callback arguments concat

我正在尝试编写一个函数,它将函数作为参数(尽可能多)并返回它们。函数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);

2 个答案:

答案 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()
  }, '')
}