除非在Eloquent JavaScript 3rd Edition的第5章高阶函数中的示例中起作用,否则函数如何工作?

时间:2019-06-02 10:51:59

标签: javascript

该函数重复似乎采用n = 0作为参数,我不知道为什么。有人可以给我解释一下吗?

function unless(test, then) {

       if (!test) then();
}

repeat(3, n => {

     unless(n % 2 == 1, () => {

          console.log(n, "is even");
      });
});

//→0是偶数

//→2是偶数

2 个答案:

答案 0 :(得分:0)

您要向函数传递两个参数,除非一个为RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^html\/(.*)\.pdf$ https://www.example.com/documents/$1.pdf [R=301,L] RewriteRule ^html\/(.*)\.jpg$ https://www.example.com/images/$1.jpg [R=301,L] ,另一个为Boolean

function

这里unless(n % 2 == 1, () => { console.log(n, "is even"); }); 是第一个参数,n % 2 == 1是第二个参数

,并且在您的函数中,除非

() =>  console.log(n, "is even"); }

我们首先检查测试是否为假,而不是仅运行作为参数传递的函数

答案 1 :(得分:0)

我刚刚意识到重复功能是在本章之前预定义的。

function repeat(n, action) {
  for (let i = 0; i < n; i++) {
    action(i);
  }
}

repeat(3, console.log);
// → 0
// → 1
// → 2

这就是为什么它从n = 0开始的原因,因为在循环中i初始化为0,并且只要i小于n,就对函数求值。