【问题标题】:ESLint warning ES6 consistent-return ruleESLint 警告 ES6 一致返回规则
【发布时间】:2017-10-13 04:16:56
【问题描述】:

我收到 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
  });

然后这一行不再有警告,但是我在插入的 return 上收到 2 个警告...

箭头函数期望返回值(一致返回) 不必要的返回语句(no-useless-return) 我不知道如何正确解决这个问题.. 欢迎任何反馈

【问题讨论】:

  • find 回调应该总是返回一个布尔值。 itemundefined 都不是。

标签: ecmascript-6 eslint


【解决方案1】:

http://eslint.org/docs/rules/consistent-return 说:

此规则要求 return 语句要么总是指定值,要么从不指定值。

当你的 if 条件不满足时,箭头函数将终止而不会遇到 return 语句,这违反了这个规则。您的第二个版本违反了此规则,因为您的第二个返回没有指定值,这与第一个返回相反。第二个警告告诉您,您的附加 return 语句是多余的。

为了让 linter 满意,您可能应该考虑在不满足条件时从箭头函数正确返回什么。我不知道你的 find 函数究竟做了什么,但如果它的行为类似于 Array.prototype.find 你可能希望在箭头函数的末尾返回 false 。如果您需要在这种情况下返回 undefined,则适用同一页面中的此段落:

什么时候不使用它

如果你想让函数根据代码分支有不同的返回行为,那么禁用这个规则是安全的。

编辑:我之前写过查看选项treatUndefinedAsUnspecified,但如果您只需要在其中一个分支中返回未定义,这两种设置似乎都无济于事。

【讨论】:

  • 如何禁用规则?
  • 一种方法是在你的 .eslintrc.json (或 eslint 配置文件)上,添加它的 "rules" 主要属性: ..."rules": { "consistent-return": "off" "}... // 您可以将其设置为“关闭”、“警告”或“错误”
  • 以上将禁用所有规则。要禁用特定文件,请在文件顶部添加注释/* eslint-disable consistent-return */。使用// eslint-disable-line consistent-return 禁用一行。使用// eslint-disable-next-line consistent-return 禁用下一行。 eslint.org/docs/user-guide/…
【解决方案2】:

return 已正确插入,但应给出其值 ...

return false;

是正确的值

【讨论】:

    猜你喜欢
    • 2021-01-15
    • 2018-06-06
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多