我在传递卡塔时遇到了麻烦。我相信我在正确的轨道上,但不完全了解如何检索所需的结果。
说明
编写一个接受函数和函数参数的方法,并返回另一个函数,该函数在调用时返回用提供的参数调用的原始函数的结果。
示例
给定一个函数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();
};
我使用arguments
和apply()
并认为我很亲近?但是我在测试结果中得到TypeError: lazy_sum is not a function at Object.exports.runInThisContext
。任何帮助,尤其是了解正在发生的事情,都表示赞赏。感谢
答案 0 :(得分:0)
...
return function() {
return innerFunction.apply(this, array);
};
};
再次感谢所有人。问题解决了。