为啥我不能删除代码中的中间变量?

Posted

技术标签:

【中文标题】为啥我不能删除代码中的中间变量?【英文标题】:Why can't I remove the intermediate variable in my code?为什么我不能删除代码中的中间变量? 【发布时间】:2019-09-14 10:47:37 【问题描述】:

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

下面的 sn-p 工作(如预期),并且不会抛出任何错误:

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

如你所见,上面的代码sn -p抛出了一个错误:

Uncaught SyntaxError: Unexpected token ...

而第一个 sn-p 没有。 为什么会发生这种情况? 据我了解,我应该能够将 copy 替换为它包含的文字数组并且没有问题(就像我在第二个 sn-p 中所做的那样)。

我希望第二个 sn-p 的行为与第一个 sn-p 一样,并且不会引发任何错误。

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

【问题讨论】:

【参考方案1】:

添加一个分号,它可以完美地工作。

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

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

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

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

这导致了你的错误。

【讨论】:

以上是关于为啥我不能删除代码中的中间变量?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能访问子类中的受保护变量?

为啥我不能删除数据框中的任何列? [复制]

为啥R中的回归会删除因子变量的索引1? [复制]

为啥我不能删除这个表格?

为啥我不能为具有相同名称的命名函数表达式中的变量赋值?

Oracle删除字段中的空格、回车及指定字符的实例代码