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配置中的设置吗?

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

({ data, count } = await myModel.find(filter, options))

最佳答案

任何以{ ... }开头的语句始终将带括号的序列解析为代码块而不是对象(包括解构对象表达式)。

MDN在其documentation on destructuring中阐明了这种确切情况:


var a, b;

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

  
  注意:使用不带声明的对象文字解构分配时,需要在赋值语句周围加上括号( ... )
  
  {a, b} = {a: 1, b: 2}是无效的独立语法,因为左侧的{a, b}被认为是一个块,而不是对象文字。
  
  但是,({a, b} = {a: 1, b: 2})有效,var {a, b} = {a: 1, b: 2}也有效
  
  您的( ... )表达式必须以分号开头,或者可以将其用于执行上一行的功能。

关于javascript - 通过对先前声明的变量进行解构分配来获取linter错误“意外 token =”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58490255/

10-13 06:47