代码之家  ›  专栏  ›  技术社区  ›  leonardofed

箭头函数可以作为重复参数()吗?

  •  -2
  • leonardofed  · 技术社区  · 7 年前

    在搜索箭头函数时,我遇到了这个问题。 example

    let labels = [];
    repeat(5, i => {
      labels.push(`Unit ${i + 1}`);
    });
    console.log(labels);
    // → ["Unit 1", "Unit 2", "Unit 3", "Unit 4", "Unit 5"]
    

    第一,重复方法 MDN 似乎只接受一个参数 (count) 是的。

    第二,箭头函数应该这样写: i = () => {} ,而不是 i => {}

    这是一个过时的片段,无论如何都不起作用,还是我应该用另一种方式来解释它?

    2 回复  |  直到 7 年前
        1
  •  1
  •   CertainPerformance    7 年前

    这个 repeat 文中提到的方法不是 String.prototype.repeat ,但文章本身定义的独立函数-它不是内置函数:

    但是如果我们不想记录数字怎么办?因为做某事可以表示为函数,而函数只是值,所以我们可以将动作作为函数值传递。

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

    你提到的语法

    箭头函数应该这样写:i=()=>{},而不是i=>{}

    仅当所讨论的箭头函数打算接受完全为零的参数时才为真。只有一个参数的箭头函数 可以 在参数列表中省略括号。(两个或多个参数再次需要括号)

    你提到的片段确实很有用:

    function repeat(n, action) {
      for (let i = 0; i < n; i++) {
        action(i);
      }
    }
    
    let labels = [];
    repeat(5, i => {
      labels.push(`Unit ${i + 1}`);
    });
    console.log(labels);
        2
  •  0
  •   Nina Scholz    7 年前

    它看起来像是 repeat ,不是 String 是的。

    在这种情况下,可以将具有所需参数签名的函数传递给该函数。

    const
        repeat = (l, fn) => {
            var i;
            for (i = 0; i < l; i++) fn(i);
        };
    
    let labels = [];
    
    repeat(5, i => labels.push(`Unit ${i + 1}`));
    
    console.log(labels); // → ["Unit 1", "Unit 2", "Unit 3", "Unit 4", "Unit 5"]