【问题标题】:es lint '' is assigned a value but never used' eventhough i have used ites lint '' 被分配了一个值,但从未使用过' 即使我使用过它
【发布时间】:2019-04-07 08:19:09
【问题描述】:

我有一个类似下面的函数,其中 isformValid 被标记为 let 并在 if 块中使用它并根据条件更改其值。

validateForm(validationErrors, formData) {
        let validationRules = this.state.dynamicJourneyData[this.state.currentStepName].validationRules;
        let isFormValid = true;
        let fullErrorList = [];
        validationRules.rules.forEach((rule) => {
            let errorList = this.evaluateRule(rule, formData);
            if (errorList.length > 0) {
                fullErrorList = fullErrorList.concat(errorList);
            }
        });
        let finalErrorList = [];
        let errorKeys = [];
        fullErrorList.filter((error) => errorKeys.indexOf(error.id) < 0).forEach((error) => {
                finalErrorList.push(error);
                errorKeys.push(error.id);
        }); 
        if (finalErrorList.length > 0) {
            isFormValid = false;
            if (finalErrorList.length === 1) {
                validationErrors.messageTitle = validationErrors.messageTitle
                    .replace('@count', finalErrorList.length)
                    .replace('were', 'was')
                    .replace('errors', 'error');
            } else {
                validationErrors.messageTitle = validationErrors.messageTitle.replace('@count', finalErrorList.length);
            }
            validationErrors.messageBody = finalErrorList; /*(fullErrorList.map(error=>error.label)).toString();*/
        }
        return finalErrorList;
 }

我可以看到一个 eslint 错误,因为 'isFormValid' 被分配了一个值,但从未使用过 ' 即使我在 if 块中使用过它。

【问题讨论】:

  • 它没有被使用,但被分配了另一个值。 “使用”意味着在分配或返回之外的操作中对其进行操作。

标签: javascript reactjs ecmascript-6 eslint let


【解决方案1】:

ESLint 文档很好地描述了这一点 (https://eslint.org/docs/rules/no-unused-vars):

// Write-only variables are not considered as used.
var y = 10;
y = 5;

您向isFormValid 写入两次(在初始化期间和在 if 块中),但从不读取存储在变量中的值,从而触发 linting 错误。当函数返回时,存储在局部变量中的值将被丢弃。由于该值永远不会被读取或返回,因此它不会改变计算结果的任何内容。您的代码中似乎根本不需要这个变量。

【讨论】:

    【解决方案2】:

    来自 ESLint 文档:

    https://eslint.org/docs/rules/no-unused-vars

    在代码中任何地方都声明但未使用的变量是最常见的 可能是由于重构不完整而导致的错误。这些变量占据 代码中的空格,可能会导致读者混淆。

    在您的情况下,isFormValid 被简单地分配了两次值。使用它意味着在条件或循环之类的东西中使用它。

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 2021-12-04
      • 1970-01-01
      • 2021-04-13
      • 2019-05-08
      • 2020-05-04
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多