为什么我不能在代码中删除中间变量?

时间:2019-04-25 04:40:30

标签: javascript arrays ecmascript-6 syntax spread-syntax

我目前正在使用传播语法,但遇到了意外问题。

下面的代码片段可以正常工作,并且不会引发任何错误:

const arr = [1, 2, 3, 4] // create array of numbers

const copy = [...arr] // make a shallow copy of the array
copy.forEach(n => { // loop through array
  console.log(n + 1);
});

但是,如果我删除中间变量copy,我的代码似乎会抛出错误:

const arr = [1, 2, 3, 4] // create array of numbers

[...arr].forEach(n => { // loop through array
  console.log(n + 1);
});

如您所见,以上代码片段引发错误:

  

未捕获到的SyntaxError:意外令牌...

第一个代码段没有。 为什么会这样?据我了解,我应该能够将copy替换为包含但没有问题的文字数组(就像我在第二个片段中所做的那样)。

我希望第二个片段的行为与第一个片段相同,并且不会引发任何错误。

注意:我知道[...arr]在这种情况下似乎多余,我只是用它来演示我的问题。

1 个答案:

答案 0 :(得分:5)

添加分号即可正常运行。

const arr = [1, 2, 3, 4];

[...arr].forEach(n => {
  console.log(n + 1);
});

正在评估的代码没有换行符-像这样:

const arr = [1, 2, 3, 4][...arr]

哪个导致了您的错误。