Open1
ESLintのRulesを読んでいく
array-callback-return
配列メソッドのコールバックでreturn文を強制します。
配列には、フィルタリング、マッピング、フォールディングのためのメソッドがいくつかあります。それらのコールバックでreturn文を書き忘れたとしたら、それはおそらく間違いです。returnを使いたくない、あるいは返された結果を必要としない場合は、代わりに.forEachを使うことを検討してください。
エラーになる例
/*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"));
オプション
allowImplicit
デフォルト値はfalse。
true に設定すると、戻り値を必要とするメソッドのコールバックが、式を含まない return 文で暗黙的に undefined を返すことができるようになる。
以下の例がエラーにならない
/*eslint array-callback-return: ["error", { allowImplicit: true }]*/
var undefAllTheThings = myArray.map(function(item) {
return;
});
checkForEach
デフォルト値はfalse。
trueに設定すると、値を返すforEachコールバックがエラー扱いになる。
以下の例がエラーになる:
/*eslint array-callback-return: ["error", { checkForEach: true }]*/
myArray.forEach(function(item) {
return handleItem(item)
});
myArray.forEach(function(item) {
if (item < 0) {
return x;
}
handleItem(item);
});
myArray.forEach(item => handleItem(item));
myArray.forEach(item => {
return handleItem(item);
});
以下の例はエラーにならない:
/*eslint array-callback-return: ["error", { checkForEach: true }]*/
myArray.forEach(function(item) {
handleItem(item)
});
myArray.forEach(function(item) {
if (item < 0) {
return;
}
handleItem(item);
});
myArray.forEach(function(item) {
handleItem(item);
return;
});
myArray.forEach(item => {
handleItem(item);
});