Почему я не могу удалить промежуточную переменную в моем коде? - PullRequest
3 голосов
/ 25 апреля 2019

В настоящее время я работаю с синтаксисом распространения и столкнулся с неожиданной проблемой.

Приведенный ниже фрагмент работает (как и ожидалось) и не выдает никаких ошибок:

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);
});

Как видите, фрагмент кода выше выдает ошибку:

Uncaught SyntaxError: Неожиданный токен ...

В то время как первый фрагмент не имеет. Почему это происходит? Насколько я понимаю, я мог бы заменить copy на буквенный массив, который он содержит и не имеет проблем (как я делал во втором фрагменте).

Я ожидаю, что второй фрагмент будет вести себя как первый фрагмент, и не будет выдавать никаких ошибок.

Примечание : я знаю, что [...arr] кажется избыточным в этомслучай, я просто использовал это, чтобы продемонстрировать свою проблему.

1 Ответ

5 голосов
/ 25 апреля 2019

Добавьте точку с запятой, и она отлично работает.

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

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

Код оценивался без перевода строки - как это:

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

, что привело к вашей ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...