1
传递kata时遇到问题。我相信我处于正确的轨道上,但并不完全了解如何检索所需的结果。接受函数及其参数的方法的问题
的说明书
写,取入一个函数和函数的自变量和返回另一个功能,其调用时,返回与所提供的参数调用原始函数的结果的方法。
示例假设
给出一个函数添加
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
。任何帮助,特别是理解正在发生的事情,值得赞赏。谢谢
最后两行调用'innerFunction' *两次*。 –
除了Felix Kling指出的问题之外,如果innerFunction的参数之一也是函数,会发生什么情况? (提示:哎呀!)我通常不会这样做,但因为你自己亲密得多,所以这里有一个可以作为参考的单线程:let letLazy =(f,... args)=> x => f(... args);' –
你没有从'make_lazy'函数返回扰流器:'function lazy(fn/*,args * /){return fn.bind.apply(fn,[this ] .concat([]。slice.call(arguments,1))) }' –