我收到ESLint警告:
预期返回值艺术箭头功能结束(一致 - 返回)
errors.details.forEach((error) => {
const errorExists = find(errObj, (item) => { // <== ESLint warning
if (item && item.field === error.path && item.location === location) {
item.messages.push(error.message);
item.types.push(error.type);
return item;
}
});
if (!errorExists) {
errObj.push({
field: error.path,
location: error.location,
messages: [error.message],
types: [error.type]
});
}
});
但是,如果我插入一个返回
const errorExists = find(errObj, (item) => { // <== ESLint warning
if (item && item.field === error.path && item.location === location) {
item.messages.push(error.message);
item.types.push(error.type);
return item;
}
return; // <== inserted return
});
然后在这一行没有更多的警告,但是我在插入的返回上得到2个警告......
箭头函数预期返回值(一致返回) 不必要的退货声明(无用的退货) 我看不出如何正确解决这个问题.. 任何反馈欢迎
答案 0 :(得分:13)
http://eslint.org/docs/rules/consistent-return说:
此规则要求return语句始终或从不指定值。
如果不满足if条件,箭头函数将终止而不会遇到违反此规则的return语句。您的第二个版本违反了此规则,因为您的第二个返回没有指定值,与第一个返回相反。第二个警告告诉您额外的return语句是多余的。
为了让linter满意,如果条件不满足,你可能应该考虑从箭头函数正确返回什么。我不知道你的find函数究竟做了什么,但如果它的行为类似于Array.prototype.find,你可能希望在箭头函数的末尾返回false。如果在这种情况下需要返回undefined,则同一页面中的此段落适用:
何时不使用
如果要根据代码分支允许函数具有不同的返回行为,则可以安全地禁用此规则。
编辑:我之前曾写过要查看选项treatUndefinedAsUnspecified
,但看起来如果你需要在其中一个分支中返回undefined,那么任何设置都无济于事。
答案 1 :(得分:9)
正确插入了返回值,但应该给出其值...
return false;
是正确的值