目前我正在阅读雄辩的javascript,并且正在关于高阶函数的部分,并且想知道为什么在这个例子中作者没有使用return then()
或return body(i)
function unless(test, then) {
if (!test) then();
}
function repeat(times, body) {
for (var i = 0; i < times; i++) body(i);
}
repeat(3, function(n) {
unless(n % 2, function() {
console.log(n, "is even");
});
});
// → 0 is even
// → 2 is even`
答案 0 :(得分:0)
在给定的示例中,执行函数的副作用,而不是它们计算的值。因此,没有什么有用的回报。在硬核函数式编程中,通常可以避免这种模式,因为想法是具有最小的效果或没有效果,而是仅计算值。有一些例外,主要是在IO领域,这对于大多数有用的应用程序来说基本上是有效的和必要的。