接受函数及其参数的方法有问题

Trouble with method that takes in a function and its arguments

我在传递型时遇到问题。我相信我走在正确的轨道上,但并不完全了解如何检索所需的结果。

说明

编写一个接受函数和函数参数的方法,returns 调用另一个函数时,returns 使用提供的参数调用原始函数的结果。

给出的例子

给定一个函数 add

function add (a, b) {
  return a + b;
}

可以让它变得懒惰:

var lazy_value = make_lazy(add, 2, 3);

该表达式目前不会被评估,但只有当您调用 lazy_value 时才会评估:

lazy_value() => 5

这是我半天的努力总结

var make_lazy = function () {

   var innerFunction = null;
   var array = [];

   for (var i = 0; i < arguments.length; i++) {
     if (typeof arguments[i] == 'function') {
       innerFunction = arguments[i];
     } else {
      array.push(arguments[i]);
     }
    }

    innerFunction.apply(innerFunction, array);

    innerFunction();
};

我正在使用 argumentsapply(),我觉得我很接近?但是我在测试结果中得到 TypeError: lazy_sum is not a function at Object.exports.runInThisContext。感谢您提供任何帮助,尤其是了解正在发生的事情。谢谢

...

    return function() {
      return innerFunction.apply(this, array);
    };

};

再次感谢大家。问题已解决。