javascript - 为什么我不能删除代码中的中间变量?

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

如您所见,上面的代码片段抛出了一个错误:

Uncaught SyntaxError: Unexpected token ...

而第一个片段没有。 为什么会这样? 据我了解,我应该能够用它包含的文字数组替换 copy 并且没有问题(正如我在第二个片段中所做的那样)。

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

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

最佳答案

添加一个分号,效果很好。

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

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

代码在没有换行符的情况下被评估 - 就像这样:

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

这导致了您的错误。

关于javascript - 为什么我不能删除代码中的中间变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55841892/

相关文章:

javascript - JavaScript 扩展语法遇到问题

php 数组未正确形成

PHP $_POST 数组为空,但是 $_GET 完好无损

javascript - `validate` 在未指定的元素上可能会失败吗?

javascript - 为什么 WeakMaps 不可迭代?

javascript - Redux 中间件异步函数

仅针对 6 位数字的 javascript 正则表达式测试。逗号分隔

asp.net - 从用户控件打印 div 内容,无需打开新窗口

arrays - Redis reJson : JSON. ARRAYAPPEND 返回 WRONGTYPE 针对持有错误类型值的键的操作

javascript - 如何从回调函数中获取值