Javascript 获取linter error“Unexpected token=”并对以前声明的变量进行分解结构赋值

Javascript 获取linter error“Unexpected token=”并对以前声明的变量进行分解结构赋值,javascript,eslint,Javascript,Eslint,给我一个linter错误:解析错误:在解构分配处出现意外标记=。这只是我需要更改的linter配置中的一个设置吗 我可以使用括号消除错误,但为什么需要这样做 let data = [] let count, meta if (req.params.id === 'count') { // get count only } else { { data, count } = await myModel.find(filter, options) meta = { count } } 任

给我一个linter错误:解析错误:在解构分配处出现意外标记=。这只是我需要更改的linter配置中的一个设置吗

我可以使用括号消除错误,但为什么需要这样做

let data = []
let count, meta
if (req.params.id === 'count') {
  // get count only
} else {
  { data, count } = await myModel.find(filter, options)
  meta = { count }
}

任何以{…}开头的语句都将始终将括号内的序列解析为代码块,而不是包含解构对象表达式的对象

MDN在其声明中澄清了这一确切情况:

注:括号。。。在使用不带声明的对象文字解构赋值时,需要使用赋值语句

{a,b}={a:1,b:2}不是有效的独立语法,因为左侧的{a,b}被视为块而不是对象文字

然而,{a,b}={a:1,b:2}是有效的,var{a,b}={a:1,b:2}也是有效的

你的。。。表达式前面必须加分号,否则可用于在前一行执行函数

因为{在行首表示代码块的开始。如果没有声明或分组运算符,JS解释器将不会将{}视为表达式。
({ data, count } = await myModel.find(filter, options))
var a, b;

({a, b} = {a: 1, b: 2});