首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析错误:意外令牌,预期",和SyntaxError:意外令牌'[‘

解析错误:意外令牌,预期",和SyntaxError:意外令牌'[‘
EN

Stack Overflow用户
提问于 2021-12-07 04:21:39
回答 4查看 2.6K关注 0票数 1

app.js

代码语言:javascript
运行
复制
let ids = [1, 2, 3];

let obj = {};

for (let i in ids) {
  obj = { ...obj, ids[i]: "" };   
}

console.log(obj);

在执行上述代码时,我会得到以下错误。

代码语言:javascript
运行
复制
Parsing error: Unexpected token, expected ","

  4 |
  5 | for (let i in ids) {
> 6 |   obj = { ...obj, ids[i]: "" };  
    |                      ^
  7 | }
  8 |
  9 | console.log(obj);eslint

当我将鼠标悬停在VS代码中的行obj = { ...obj, ids[i]: "" };上方时,我会得到这个错误。

当我使用节点运行代码时,即在node app.js上。在我的终端中我得到了以下错误:

代码语言:javascript
运行
复制
obj = { ...obj, ids[i]: "" };  
                     ^

SyntaxError: Unexpected token '['
    at wrapSafe (internal/modules/cjs/loader.js:988:16)
    at Module._compile (internal/modules/cjs/loader.js:1036:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
    at Module.load (internal/modules/cjs/loader.js:937:32)
    at Function.Module._load (internal/modules/cjs/loader.js:778:12)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
    at internal/main/run_main_module.js:17:47

我做错了什么?我希望obj在结尾处的值是{1 : "", 2 : "", 3: ""}

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-12-07 04:28:19

有几种解决办法。

  1. 将其包裹在一个支架上:

代码语言:javascript
运行
复制
for (let i in ids) {
  obj = { ...obj, [ids[i]]: "" }; // Brackets make it act as a key name instead of something else
}

简单而简单的方法:

代码语言:javascript
运行
复制
for (let i in ids) {
  obj[ids[i]] = ""; // This adds a value
}
票数 4
EN

Stack Overflow用户

发布于 2021-12-07 04:27:22

使用[ids[i]]而不是ids[i]

代码语言:javascript
运行
复制
let ids = [1, 2, 3];

let obj = {};

for (let i in ids) {
  obj = { ...obj, [ids[i]]: "" };
}

console.log(obj);

票数 1
EN

Stack Overflow用户

发布于 2021-12-07 04:30:39

is[i]key,应该是解析运行时,所以您应该将其设置为computed property names

从ECMAScript 2015开始,对象初始化器语法也支持计算的属性名。这允许您将表达式放入方括号[]中,该表达式将被计算并用作属性名称。这让人想起属性访问器语法的括号表示法,您可能已经使用它来读取和设置属性。- MDN

代码语言:javascript
运行
复制
let ids = [1, 2, 3];

let obj = {};
for (let i in ids) {
  obj = { ...obj, [ids[i]]: "" };
}

console.log(obj);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70254904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档