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中引入。