我在区分传播和休息方面遇到了一些麻烦。有人可以向我解释在reduce函数的return语句中是否使用了spread或rest?

这是我不明白的:

return [currentValue, ...accumulator]


代替

let str = 'KING';

const reverseStr = str => {
  return str
    .split('')
    .reduce((accumulator, currentValue) => {
      return [currentValue, ...accumulator];
    }, [])
    .join('');
};

最佳答案

Rest语法总是创建(或分配给)变量,例如:

const [itemOne, ...rest] = arr;
//     ^^ created  ^^^^


传播语法只会导致另一个数组(或对象)表达式-它不会在变量中添加任何内容。在这里,您正在使用扩展语法来创建一个新数组,该数组由currentValueaccumulator的值组成。

return [currentValue, ...accumulator];


就好像

return [currentValue, accumulator[0], accumulator[1], accumulator[2] /* ... */];


您正在将accumulator的项目散布到要返回的数组中。

关于javascript - 这是使用传播还是休息来减少功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60680428/

10-12 00:05