解析错误:意外的令牌,预期的“,”和语法错误:意外的令牌'['[重复]
Posted
技术标签:
【中文标题】解析错误:意外的令牌,预期的“,”和语法错误:意外的令牌\'[\'[重复]【英文标题】:Parsing error: Unexpected token, expected "," AND SyntaxError: Unexpected token '[' [duplicate]解析错误:意外的令牌,预期的“,”和语法错误:意外的令牌'['[重复] 【发布时间】:2022-01-12 05:13:38 【问题描述】:app.js
let ids = [1, 2, 3];
let obj = ;
for (let i in ids)
obj = ...obj, ids[i]: "" ;
console.log(obj);
执行上述代码时,出现以下错误。
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
上。我的终端出现以下错误:
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: ""
【问题讨论】:
您希望obj
最终看起来像什么?
我希望 obj 最后的值是 1 : "", 2 : "", 3: ""。问题中也提到了这一点。
不要在数组上使用for
/in
。它适用于对象。使用for
/of
或用于迭代数组的其他方法之一。
您是否有特殊原因要这样做?从技术上讲,数组已经是您尝试实现的形状的对象(仅具有一些附加属性)。您可以使用 const newArr = [...ids];
克隆您的阵列,这对您来说可能是一个更好的选择。如果你真的需要一个对象,一个快速的选择是使用const obj = Object.assign(, ids);
【参考方案1】:
有几种解决方案。
-
用括号括起来:
for (let i in ids)
obj = ...obj, [ids[i]]: "" ; // Brackets make it act as a key name instead of something else
-
简单易行的方法:
for (let i in ids)
obj[ids[i]] = ""; // This adds a value
【讨论】:
【参考方案2】:使用[ids[i]]
代替ids[i]
。
let ids = [1, 2, 3];
let obj = ;
for (let i in ids)
obj = ...obj, [ids[i]]: "" ;
console.log(obj);
【讨论】:
【参考方案3】:is[i]
是 key
应该是解析运行时,所以你应该让它 computed property names
从 ECMAScript 2015 开始,对象初始值设定项语法也 支持计算属性名称。这允许您放置一个表达式 在括号 [] 中,它将被计算并用作属性名称。 这让人想起属性访问器的括号表示法 语法,您可能已经使用它来读取和设置属性。 -MDN
let ids = [1, 2, 3];
let obj = ;
for (let i in ids)
obj = ...obj, [ids[i]]: "" ;
console.log(obj);
【讨论】:
【参考方案4】:如果您想动态地将""
设置为每个id
作为对象中的键,我建议您这样做:
let obj =
let ids = [1,2,3]
ids.forEach((id) =>
obj[id] = '';
);
对象将是 '1': '', '2': '', '3': ''
;
【讨论】:
以上是关于解析错误:意外的令牌,预期的“,”和语法错误:意外的令牌'['[重复]的主要内容,如果未能解决你的问题,请参考以下文章