Eslint
规则 | Rules

array-callback-return

在数组方法的回调中实现返回语句(array-callback-return)

Array有几种过滤,映射和折叠的方法。如果我们忘记return在这些回调中写入语句,那可能是一个错误。

// example: convert ['a', 'b', 'c'] --> {a: 0, b: 1, c: 2} var indexMap = myArray.reduce(function(memo, item, index) { memo[item] = index; }, {} // Error: cannot set property 'b' of undefined

return规则强制在数组方法的回调中使用语句。

规则细节

规则查找以下方法的回调函数,然后检查return语句的用法。

  • Array.from

  • Array.prototype.every

  • Array.prototype.filter

  • Array.prototype.find

  • Array.prototype.findIndex

  • Array.prototype.map

  • Array.prototype.reduce

  • Array.prototype.reduceRight

  • Array.prototype.some

  • Array.prototype.sort

  • 以上类型的数组。

规则的错误代码示例:

/*eslint array-callback-return: "error"*/ var indexMap = myArray.reduce(function(memo, item, index) { memo[item] = index; }, {} var foo = Array.from(nodes, function(node) { if (node.tagName === "DIV") { return true; } } var bar = foo.filter(function(x) { if (x) { return true; } else { return; } }

规则的正确代码示例:

/*eslint array-callback-return: "error"*/ var indexMap = myArray.reduce(function(memo, item, index) { memo[item] = index; return memo; }, {} var foo = Array.from(nodes, function(node) { if (node.tagName === "DIV") { return true; } return false; } var bar = foo.map(node => node.getAttribute("id")

已知限制

规则检查具有给定名称的方法的回调函数,即使具有该方法的对象不是数组。

何时不使用它

如果您不想在数组方法的回调中警告使用return语句,那么禁用此规则是安全的。

Version

规则在ESLint 2.0.0-alpha-1中引入。

资源