我有一个类似下面的函数,其中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块中使用了它。
答案 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
仅被分配了两次值。使用它意味着将其用于条件或循环之内。