为什么这些功能不归还?

时间:2017-11-04 16:29:28

标签: javascript functional-programming higher-order-functions

目前我正在阅读雄辩的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`

1 个答案:

答案 0 :(得分:0)

在给定的示例中,执行函数的副作用,而不是它们计算的值。因此,没有什么有用的回报。在硬核函数式编程中,通常可以避免这种模式,因为想法是具有最小的效果或没有效果,而是仅计算值。有一些例外,主要是在IO领域,这对于大多数有用的应用程序来说基本上是有效的和必要的。