一种函数式方法是编写一个 HOF,它创建一个调用底层函数 n 次的函数:
function repeatTimes(fn, n) {
return function() {
while (n--) fn(...arguments);
};
}
现在你可以这样调用你的函数:
function myFunc() { console.log("functional programming is a religion"); }
const tentimes = repeatTimes(myFunc, 10);
tentimes();
可以通过概括继续重复调用的条件来扩展这种方法。我们将传递一个确定何时停止的函数,而不是一个固定的数字 n。我们将向该函数传递迭代计数:
function repeatWhile(fn, cond) {
return function() {
var count = 0;
while (cond(count++)) fn(...arguments);
};
}
现在我们称之为
const tentimes = repeatWhile(myFunc, i => i < 10);
tentimes();
我们可以通过一个创建条件函数的函数来进一步简化这一点,我们称之为lessThan:
function lessThan(n) { return i => i < n; }
现在调用可以写成
const tentimes = repeatWhile(myFunc, lessThan(10));
tentimes();