Функции со стрелками, не вызывающие неоднозначности
Запретить функции со стрелками, которые могут быть перепутаны с операторами сравнения
Некоторые проблемы, выявленные этим правилом, могут быть автоматически исправлены с помощью опции --fix командной строки
Это правило было устаревшим в ESLint v8.53.0. Пожалуйста, используйте соответствующее правило соответствующее правило в @stylistic/eslint-plugin-js.
Функции со стрелками (=>) похожи по синтаксису на некоторые операторы сравнения (>, <, <=, и >=). Это правило предупреждает об использовании синтаксиса функций со стрелками в ситуациях, где он может быть перепутана с оператором сравнения.
Вот пример, где использование => может вызвать путаницу:
// The intent is not clear
var x = a => 1 ? 2 : 3;
// Did the author mean this
var x = function (a) {
return 1 ? 2 : 3;
};
// Or this
var x = a <= 1 ? 2 : 3;
Подробное описание правила
Примеры некорректного кода для этого правила:
/*eslint no-confusing-arrow: "error"*/
var x = ;
var x = ;
Примеры корректного кода для этого правила:
/*eslint no-confusing-arrow: "error"*/
var x = a => (1 ? 2 : 3);
var x = (a) => (1 ? 2 : 3);
var x = (a) => {
return 1 ? 2 : 3;
};
var x = a => { return 1 ? 2 : 3; };
Параметры
Это правило принимает два параметра по умолчанию:
{
"rules": {
"no-confusing-arrow": [
"error",
{ "allowParens": true, "onlyOneSimpleParam": false }
]
}
}
allowParens — это логическое значение, которое может быть true (по умолчанию) или false:
-
trueослабляет правило и принимает скобки как допустимый синтаксис для предотвращения путаницы. -
falseпредупреждает, даже если выражение заключено в скобки
Примеры некорректного кода для этого правила с параметром {"allowParens": false}:
/*eslint no-confusing-arrow: ["error", {"allowParens": false}]*/
var x = ;
var x = ;
onlyOneSimpleParam — это логическое значение, которое может быть true или false (по умолчанию):
-
trueослабляет правило и не сообщает об ошибках, если функция со стрелками имеет 0 или более 1 параметра, или параметр не является идентификатором. -
falseпредупреждает независимо от параметров.
Примеры корректного кода для этого правила с параметром {"onlyOneSimpleParam": true}:
/*eslint no-confusing-arrow: ["error", {"onlyOneSimpleParam": true}]*/
() => 1 ? 2 : 3;
(a, b) => 1 ? 2 : 3;
(a = b) => 1 ? 2 : 3;
({ a }) => 1 ? 2 : 3;
([a]) => 1 ? 2 : 3;
(...a) => 1 ? 2 : 3;
Связанные правила
Версия
Это правило было добавлено в ESLint v2.0.0-alpha-2.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-confusing-arrow