Spec-Zone.ru › ESLint

prefer-arrow-callback

Требовать использование стрелочных функций для обратных вызовов

🔧 Исправимо

Некоторые проблемы, выявленные этой правилом, автоматически исправляемы с помощью параметра командной строки --fix командной строки

Стрелочные функции могут быть привлекательной альтернативой выражениям функций для обратных вызовов или аргументов функций.

Например, стрелочные функции автоматически привязаны к своему окружающему области/контексту. Это представляет собой альтернативу стандарту до ES6, в котором для достижения аналогичного поведения необходимо было явно привязать выражения функций.

Кроме того, стрелочные функции:

  • более лаконичны и проще для понимания.

  • привязаны лексически независимо от того, где и когда они вызываются.

Подробное описание правила

Это правило ищет выражения функций, используемые в качестве обратных вызовов или аргументов функций. Ошибка будет генерироваться для всех таких выражений, которые можно заменить стрелочной функцией без изменения результата.

Следующие примеры будут помечены:

Открыть в Playground
/* 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)

Случаи, когда стрелочная функция не даст идентичных результатов, будут проигнорированы.

Следующие примеры не будут помечены:

Открыть в 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
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 } не будут помечены следующие примеры:

Открыть в 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(function() { this.a; });

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

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

Когда не следует использовать

  • В средах, которые ещё не приняли ES6 языковые возможности (ES3/5).

  • В средах ES6+, которые позволяют использовать выражения функций при описании обратных вызовов или аргументов функций.

Версия

Это правило было добавлено в ESLint v1.2.0.

Дополнительные материалы

Стрелочные выражения функций - JavaScript | MDN

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/prefer-arrow-callback

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API