es lint”被分配了一个值,但从未使用过,即使我已经使用过

时间:2018-11-03 08:09:34

标签: javascript reactjs ecmascript-6 eslint let

我有一个类似下面的函数,其中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块中使用了它。

2 个答案:

答案 0 :(得分:2)

ESLint文档对此进行了很好的描述(https://eslint.org/docs/rules/no-unused-vars):

"test, test2, test3"

您两次写入// Write-only variables are not considered as used. var y = 10; y = 5; (在初始化期间和if块中),但是从未读取存储在变量内部的值,从而触发了插入错误。函数返回时,存储在局部变量中的值将被丢弃。由于永远不会读取或返回该值,因此它不会改变计算结果。似乎您的代码中根本不需要此变量。

答案 1 :(得分:0)

从ESLint文档:

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

  

在代码中任何地方声明并没有使用的变量最多   可能是由于重构不完整而导致的错误。这样的变量占用   代码中的空格,可能导致读者感到困惑。

在您的情况下,isFormValid仅被分配了两次值。使用它意味着将其用于条件或循环之内。