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

时间:2016-07-29 15:04:06

标签: function javascript-objects

我在传递卡塔时遇到了麻烦。我相信我在正确的轨道上,但不完全了解如何检索所需的结果。

说明

编写一个接受函数和函数参数的方法,并返回另一个函数,该函数在调用时返回用提供的参数调用的原始函数的结果。

示例

给定一个函数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。任何帮助,尤其是了解正在发生的事情,都表示赞赏。感谢

1 个答案:

答案 0 :(得分:0)

...

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

};

再次感谢所有人。问题解决了。