高阶函数(Eloquent JS)提供新类型的控制流程?

时间:2015-01-16 22:16:06

标签: javascript higher-order-functions

我正在通过EloquentJS第5章高阶函数,我无法完全理解他提供创建新函数的函数示例的部分。我遇到麻烦的地方是了解提供新型控制流程的功能:

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%2和2%2 == 0,函数不会作为“然后”传递吗?换句话说,它不应该返回奇数吗?我哪里错了?我觉得我特别密集。

这就是我正在阅读“除非”功能:

//if (!(n %2)) then run the function.

我不知道我是如何说服自己与功能实际做的相反的。谢谢你的时间。

0 个答案:

没有答案