解析错误:意外的令牌,预期的“,”和语法错误:意外的令牌'['[重复]

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': ''

【讨论】:

以上是关于解析错误:意外的令牌,预期的“,”和语法错误:意外的令牌'['[重复]的主要内容,如果未能解决你的问题,请参考以下文章

解析错误:意外的令牌,预期的“...”

获取解析错误:意外的令牌,预期的“;”

在新的 create-react-app 项目中通过“as”关键字键入断言会导致“解析错误:意外的令牌,预期的“;”`

GraphQLError:语法错误:无法解析意外字符“。”

php错误<b>解析错误</b>:语法错误,意外':'在

意外的令牌 语法错误