javascript - 为什么我不能删除代码中的中间变量?
问题描述
我目前正在使用扩展语法并遇到了一个意想不到的问题。
下面的代码片段有效(如预期的那样),并且不会引发任何错误:
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]
这导致了你的错误。
推荐阅读
- oracle - 如何修复与 PL/SQL 中的索引变量有关的错误:PLS-00103
- serialization - 如何保存/序列化 QVector 的 QVariant
- mongodb - 在 GFS 中创建 READSTREAM 会引发错误,似乎无法捕获
- python - 将嵌套的键/值和嵌套列表合并到一个 json 中
- python - 内容未对齐时如何拆分列
- react-native - 使用 react-navigation 在 react-native 中隐藏或显示 tabBar 中的特定选项卡
- xcode - SwiftUI dyld:找不到符号:_$s7SwiftUI7BindingVyxGAA0C11ConvertibleAAMc Xcode 11 beta 5
- html - 使用 UI Kit 添加动态边距
- docker - 私有 VSTS docker 代理未发布到网络共享文件夹
- hadoop - Hadoop Distcp - 增加 distcp.dynamic.max.chunks.tolerable 配置和调整 distcp