prefer-arrow-callback
Требовать использование стрелочных функций для обратных вызовов
Некоторые проблемы, выявленные этой правилом, автоматически исправляемы с помощью параметра командной строки --fix командной строки
Стрелочные функции могут быть привлекательной альтернативой выражениям функций для обратных вызовов или аргументов функций.
Например, стрелочные функции автоматически привязаны к своему окружающему области/контексту. Это представляет собой альтернативу стандарту до ES6, в котором для достижения аналогичного поведения необходимо было явно привязать выражения функций.
Кроме того, стрелочные функции:
-
более лаконичны и проще для понимания.
-
привязаны лексически независимо от того, где и когда они вызываются.
Подробное описание правила
Это правило ищет выражения функций, используемые в качестве обратных вызовов или аргументов функций. Ошибка будет генерироваться для всех таких выражений, которые можно заменить стрелочной функцией без изменения результата.
Следующие примеры будут помечены:
/* eslint prefer-arrow-callback: "error" */
foo(); // ERROR
// prefer: foo(a => a)
foo(.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();
foo();
someArray.map(, someObject);
Когда не следует использовать
-
В средах, которые ещё не приняли ES6 языковые возможности (ES3/5).
-
В средах ES6+, которые позволяют использовать выражения функций при описании обратных вызовов или аргументов функций.
Версия
Это правило было добавлено в ESLint v1.2.0.
Дополнительные материалы
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/prefer-arrow-callback