Javascript + ES:[... arr]和arr之间有什么区别吗?

时间:2018-07-23 14:17:16

标签: javascript ecmascript-6

请考虑一种情况,其中您要遍历const数组。 两者之间有什么区别吗?

[...arr].forEach((elem) => {
  // your operations
});

 arr.forEach((elem) => {
   // your operations
 });

这两个可以互换使用吗?

1 个答案:

答案 0 :(得分:4)

  1. 它将复制该数组。如果回调函数将使用array参数并对其进行修改,那将有所作为。例如:

    [...arr].forEach((val, i, a) => a.push(val))
    
  2. 如果arr不是数组而是类似 array 的数组,它将把它变成一个数组,从而使您可以forEach对其进行覆盖。例如:

    [...document.getElementsByTagName('p')].forEach(p => console.log(p))