ESLint 报错:Expected an assignment or function call and instead saw an expression 解决方案

在使用 JavaScript 进行前端开发时,我们经常会使用 ESLint 工具来检查代码规范和潜在的错误,以保证代码的可读性和可维护性。但在实际开发中,有时我们会遇到 ESLint 报错:Expected an assignment or function call and instead saw an expression,提示我们在代码中出现了表达式,而 ESLint 要求代码必须是语句、函数调用或赋值表达式。这种错误让我们感到困惑,对代码的编写也带来了一定的限制,本文将介绍这种情况的解决方案。

报错原因

在 JavaScript 中,表达式是由操作符和操作数组成的任何一个语句。例如:var a = 1 + 2 中的 1 + 2 就是一个表达式,它由操作符 + 和操作数 12 组成。而 1 + 2 并不是语句,它是一个表达式语句的一部分。ESLint 的规则要求我们在代码中只能使用语句、函数调用或赋值表达式,任何返回值的表达式都将被认为是不正确的,这也就是出现报错的原因。

解决方案

针对这种报错,我们通常有两种解决方案。

方案一:忽略该规则

当我们确定该表达式没有错误时,可以选择忽略该规则,让 ESLint 不再对该表达式进行检查。具体方式是在 .eslintrc.js 文件中添加如下规则:

其中,no-unused-expressions 就是 ESLint 报错的规则名,我们需要将其设置为 "error",表示该规则必须遵守,并且通过对象的配置项设置三个选项:

  • allowShortCircuit:允许使用逻辑短路语句,例如 a && b()
  • allowTernary:允许使用三元运算符 a ? b() : c()
  • allowTaggedTemplates:允许使用自定义的模板字符串,例如 tag

通过这种方式,我们可以忽略该规则的报错,但也不能完全放任不管,需要谨慎使用。

方案二:转化为语句或函数调用

当我们确定该表达式必须使用时,可以考虑将其转换为语句或函数调用的形式。具体方式取决于表达式的具体情况,以下是几种常见的做法。

方案一:添加 void 关键字

当我们需要执行一个表达式而不需要返回值时,可以使用 void 关键字将其转化为语句。例如:

方案二:使用自执行函数

当我们需要返回一个值时,可以使用自执行函数将该表达式包裹起来,从而将其转换为函数调用。例如:

方案三:使用模板字符串

当我们需要在模板字符串中使用表达式时,可以使用 ${} 的形式将其包裹起来。例如:

总结

ESLint 报错 Expected an assignment or function call and instead saw an expression 的原因是规定代码中只能使用语句、函数调用或赋值表达式,任何返回值的表达式都将被认为是不正确的。解决方案包括忽略该规则和转化为语句或函数调用。选择哪种方案取决于具体情况,需要在保证代码规范的前提下灵活处理。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654b69947d4982a6eb54335e


纠错
反馈