版本

prefer-arrow-callback

要求使用箭头函数作为回调函数

🔧 可修复

此规则报告的一些问题可以通过 --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" */

// 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 } ] */

foo(function() { this.a; });

foo(function() { (() => this); });

someArray.map(function(item) { return this.doSomething(item); }, someObject);

何时不使用它

  • 在尚未采用 ES6 语言功能(ES3/5)的环境中。

  • 在允许使用函数表达式来描述回调函数或函数参数的 ES6+ 环境中。

版本

此规则是在 ESLint v1.2.0 中引入的。

进一步阅读

资源

更改语言