【问题标题】:Need fix for EsLint error: Gratuitous parentheses around expression-no-extra-parens需要修复 EsLint 错误:expression-no-extra-parens 周围的无偿括号
【发布时间】:2019-06-05 06:56:14
【问题描述】:

在我的 JavaScript 代码上运行 ESLint 时出现错误。

var crslWt = 100;
var totCrslWt = (crslWt/2)-20;

我遇到了错误

表达式 no-extra-parens 周围的无偿括号

【问题讨论】:

  • 然后去掉括号符合规则?
  • 先除法,再减法。 ESLint 意识到了这一点,因此您会收到错误消息。如果代码是crslWt/(2-20);,那么去掉括号会改变含义,ESLint 不会违反规则。
  • (crslWt / 2) - 20crslWt / 2 - 20 在执行和结果方面是相同的。这就是为什么括号是多余的,因此您会从 ESLint 中得到规则违规。
  • @MosèRaguzzini 我知道,但是如果启用了规则,那么代码样式将禁止这样做。因此,为了符合风格指南,应该删除括号。反过来,这不会改变表达式的含义。我不知道你为什么选择澄清这里没有问题的事情。
  • @vlaz 问题指出“需要修复 eslint 错误..”,因此您可以修复 linter 或代码。因为代码需要尽可能具有可读性我更愿意修复 linter,就是这样。

标签: javascript ecmascript-6 sonarqube eslint


【解决方案1】:

只需删除 crslWt/2 周围的括号。

/ operator takes precedence over -,因此在这种情况下括号在技术上是多余的

【讨论】:

  • 有时不是很清楚,额外的括号有助于加快阅读速度。
【解决方案2】:

看来您必须强制执行选项{ "nestedBinaryExpressions": false }

来自official documentation

此规则的正确代码示例,带有“all”和{ "nestedBinaryExpressions": false } 选项:

/* eslint no-extra-parens: ["error", "all", { "nestedBinaryExpressions": false }] */

x = a || (b && c);
x = a + (b * c);
x = (a * b) / c;

【讨论】:

    【解决方案3】:

    在 Visual Studio 中:

    更改以下行:

    "no-extra-parens": 1,
    

    "no-extra-parens": 0,
    

    【讨论】:

    • 只需删除括号即可解决问题,但有时为了清楚起见,您需要括号。例如 || (b && c) 将导致警告,但是 a || b && c 对某些人(包括我自己)来说并不那么清楚。是的,括号是额外的,但添加它们可以向读者阐明声明。
    猜你喜欢
    • 2021-08-28
    • 1970-01-01
    • 2015-11-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2019-01-04
    • 2013-04-07
    相关资源
    最近更新 更多