版本

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

进一步阅读

资源

更改语言