ESLint警告ES6一致返回规则

时间:2017-05-14 07:43:03

标签: ecmascript-6 eslint

我收到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个警告......

箭头函数预期返回值(一致返回) 不必要的退货声明(无用的退货) 我看不出如何正确解决这个问题.. 任何反馈欢迎

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;

是正确的值