【发布时间】:2017-12-02 14:48:58
【问题描述】:
在学校,我们的任务是构建 lodash method flowRight! 的实现
在它提到的规范中:
接受任意数量的函数并返回一个新函数 使用它的参数并从右到左调用提供的函数 (最后到第一个)。每个函数的参数(第一个函数除外)是 由其右侧函数的返回值决定。通话 到 flowRight 返回的函数计算返回值 最左边的函数。
这是他们给出的一个例子:
e.g.
var sayHello = function (name) {
return 'Hello, ' + name;
},
addExclamation = function (s) {
return s + '!';
},
smallTalk = function (s) {
return s + ' Nice weather we are having, eh?';
};
var greetEnthusiastically = flowRight(addExclamation, sayHello);
greetEnthusiastically('Antonio');
// --> returns 'Hello, Antonio!'
//(sayHello is called with 'Antonio',
// addExclamation is called with 'Hello, Antonio')
我觉得我理解了这个示例所演示的静态示例中发生了什么。
function (func1, func2) {
return function(value) {
return func1(func2(value));
}
}
我想我很难把我的大脑围绕在一个循环中,我认为你会需要它。这是我目前的实现。
var flowRight = function (...args) {
var Func;
for(var i = args.length - 2; 0 > i; i--) {
function Func(value) {
return args[i](args[i + 1](value));
}
}
return Func;
};
任何帮助将不胜感激!
【问题讨论】:
标签: javascript recursion closures lodash