为什么许多 linters 在使用逗号运算符编写简洁代码时会发出警告?

Why do many linters warn when using comma operators to write terse code?

我想知道为什么默认情况下以下代码对 CRA(和许多其他)js linter 有问题。我在这里看到的是紧凑可读的代码行。我的猜测是因为下面的一个衬里不是很可扩展。有时,小而简单的代码块无论如何都不需要(不应该)变大。还有什么其他原因可以避免像这样编写简单的一行代码?

doSomething( prev => (prev.searchField = val, { ...prev }) );

我真的需要这样做才能让 linter 开心吗?还是有其他方法可以保持上面的一行?

doSomething(prev => {
  prev.searchField = val;
  return { ...prev };
});

为了保持简洁我们不要讨论什么更具可读性,请回答为什么你认为 linters 用 Unexpected use of comma operator no-sequences.

警告这种类型的代码

ESLint 规则是非常可定制的,允许具有特定指南的团队定制警告和 linting,这样他们就可以开始使用该工具,而无需编辑他们以前的所有代码。

但是,CRA 和其他一些人提供了推荐的 linter 设置,这些设置通常是“最佳实践”,也可以防止初学者犯错。

虽然您可能认为简单的一行代码是可读的,但对于很多人来说并非如此,因此 no-sequences 规则是您碰巧使用的预选规则集的一部分正在使用。

如果您不同意这些建议,则可以轻松将其关闭。

no-sequences rule in EsLint docs