prefer-arrow-callback (Rules) – Eslint 中文開發手冊 - Break易站
prefer-arrow-callback (Rules) - Eslint 中文開發手冊
在命令列上的--fix選項可以自動修復一些被這條規則反映的問題。
對於回撥或函式引數,箭頭函式可以成為函式表示式的有吸引力的替代方案。
例如,箭頭函式會自動繫結到其周圍的範圍/上下文。這為顯式繫結函式表示式以實現類似行為提供了 ES6之前的標準替代方案。
另外,箭頭功能是:
不詳細,更容易推理。不管他們被呼叫的地點或時間,都可以詞法繫結。
規則細節
此規則定位用作回撥函式或函式引數的函式表示式。任何可以被箭頭函式取代而不改變結果的錯誤都會產生。
以下示例將被標記:
/* eslint prefer-arrow-callback: "error" */ foo(function(a) { return a; }); // ERROR // prefer: foo(a => a) foo(function() { return this.a; }.bind(this)); // ERROR // prefer: foo(() => this.a)
箭頭函式不會產生相同結果的例項將被忽略。
以下示例不會被標記:
/* eslint prefer-arrow-callback: "error" */ /* eslint-env es6 */ // arrow function callback foo(a => a); // OK // generator as callback foo(function*() { yield; }); // OK // function expression not used as callback or function argument var foo = function foo(a) { return a; }; // OK // unbound function expression callback foo(function() { return this.a; }); // OK // recursive named function callback foo(function bar(n) { return n && n + bar(n - 1); }); // OK
選項
通過選項物件訪問進一步控制此規則的行為。
預設: { allowNamedFunctions: false, allowUnboundThis: true }
allowNamedFunctions
預設情況下{ "allowNamedFunctions": false },該boolean選項禁止使用命名函式作為回撥函式或函式引數。
通過允許使用命名函式而不受限制,將此值更改為將true反轉此選項的行為。
{ "allowNamedFunctions": true } 不會標記以下示例:
/* eslint prefer-arrow-callback: [ "error", { "allowNamedFunctions": true } ] */ foo(function bar() {});
allowUnboundThis
預設情況下{ "allowUnboundThis": true },只要有問題的函式沒有被明確繫結,該boolean選項就允許包含的函式表示式this被用作回撥函式。
設定false為該選項時,禁止將函式表示式作為回撥函式或函式引數完全使用,無一例外。
{ "allowUnboundThis": false } 將舉出以下例子:
/* eslint prefer-arrow-callback: [ "error", { "allowUnboundThis": false } ] */ /* eslint-env es6 */ foo(function() { this.a; }); foo(function() { (() => this); }); someArray.map(function(itm) { return this.doSomething(itm); }, someObject);
何時不使用它
在尚未採用 ES6語言功能的環境中(ES3 / 5)。在 ES6 +環境中,允許在描述回撥或函式引數時使用函式表示式。
進一步閱讀
有關ES6箭頭函式的更多資訊版本此規則是在 ESLint 1.2.0.Resources 中引入的規則資源文件資源
Eslint 中文開發手冊 ]