
prefer-arrow-callback
要求为回调使用箭头函数
对于回调或函数参数,箭头函数可以是函数表达式的有吸引力的替代方案。
例如,箭头函数自动绑定到其周围的作用域/上下文。这为预 ES6 标准显式绑定函数表达式以实现类似行为提供了一种替代方案。
此外,箭头函数是
-
不太冗长,并且更容易理解。
-
以词法方式绑定,无论何时或何地调用它们。
规则详情
此规则查找用作回调或函数参数的函数表达式。对于任何可以被箭头函数替换而不会更改结果的表达式,都将产生错误。
以下示例将被标记
在 Playground 中打开
/* eslint prefer-arrow-callback: "error" */
foo(); // ERROR
// prefer: foo(a => a)
foo(.bind(this)); // ERROR
// prefer: foo(() => this.a)
箭头函数不会产生相同结果的实例将被忽略。
以下示例将不会被标记
在 Playground 中打开
/* eslint prefer-arrow-callback: "error" */
// arrow function callback
foo(a => a); // OK
// generator as callback
foo(function*() { yield; }); // OK
// function expression not used as callback or function argument
const 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 }
将不会标记以下示例
在 Playground 中打开
/* eslint prefer-arrow-callback: [ "error", { "allowNamedFunctions": true } ] */
foo(function bar() {});
allowUnboundThis
默认情况下,{ "allowUnboundThis": true }
,此 boolean
选项允许包含 this
的函数表达式用作回调,只要相关函数尚未被显式绑定。
当设置为 false
时,此选项完全禁止使用函数表达式作为回调或函数参数,没有任何例外。
{ "allowUnboundThis": false }
将标记以下示例
在 Playground 中打开
/* eslint prefer-arrow-callback: [ "error", { "allowUnboundThis": false } ] */
foo();
foo();
someArray.map(, someObject);
何时不使用它
-
在尚未采用 ES6 语言功能的环境中 (ES3/5)。
-
在允许使用函数表达式来描述回调或函数参数的 ES6+ 环境中。
版本
此规则在 ESLint v1.2.0 中引入。
延伸阅读
