логические-операторы-присваивания
Требовать или запрещать сокращенную запись операторов логического присваивания
Некоторые проблемы, обнаруженные этим правилом, автоматически исправляются с помощью параметра --fix командной строки
Некоторые проблемы, обнаруженные этим правилом, могут быть исправлены вручную с помощью редактора предложений
ES2021 вводит сокращенную запись оператора присваивания для логических операторов ||, && и ??. Раньше это разрешалось только для математических операций, таких как + или * (см. правило operator-assignment). Сокращенная запись может использоваться, если целевой объект присваивания и левое выражение логического выражения совпадают. Например a = a || b можно сократить до a ||= b.
Подробное описание правила
Это правило требует или запрещает сокращенную запись оператора логического присваивания.
Параметры
Это правило имеет строковый и объектный параметры. Строковый параметр:
-
"always"(по умолчанию) "never"
Объектный параметр (доступен только если строковый параметр установлен на "always"):
-
"enforceForIfStatements": false(по умолчанию) Не проверять эквивалентныеifоператоры -
"enforceForIfStatements": trueПроверять эквивалентныеifоператоры
всегда
Этот параметр проверяет выражения, которые можно сократить с помощью оператора логического присваивания. Например, a = a || b можно сократить до a ||= b. Выражения с ассоциативностью, такие как a = a || b || c , считаются сокращаемыми до a ||= b || c, за исключением случаев, когда порядок вычисления явно определен с помощью скобок, таких как a = (a || b) || c.
Примеры некорректного кода для этого правила с параметром "always" по умолчанию:
/*eslint logical-assignment-operators: ["error", "always"]*/
Примеры корректного кода для этого правила с параметром "always" по умолчанию:
/*eslint logical-assignment-operators: ["error", "always"]*/
a = b
a += b
a ||= b
a = b || c
a || (b = c)
if (a) a = b
a = (a || b) || c
никогда
Примеры некорректного кода для этого правила с параметром "never":
/*eslint logical-assignment-operators: ["error", "never"]*/
Примеры корректного кода для этого правила с параметром "never":
/*eslint logical-assignment-operators: ["error", "never"]*/
a = a || b
a = a && b
a = a ?? b
enforceForIfStatements
Этот параметр проверяет дополнительные шаблоны с операторами if, которые могут быть выражены с помощью оператора логического присваивания.
Примеры некорректного кода для этого правила с параметром ["always", { enforceForIfStatements: true }]:
/*eslint logical-assignment-operators: ["error", "always", { enforceForIfStatements: true }]*/
// <=> a &&= b
// <=> a ||= b
// <=> a ??= b
// <=> a ??= b
Примеры корректного кода для этого правила с параметром ["always", { enforceForIfStatements: true }]:
/*eslint logical-assignment-operators: ["error", "always", { enforceForIfStatements: true }]*/
if (a) b = c
if (a === 0) a = b
Когда не следует его использовать
Использование сокращенной записи оператора логического присваивания — это стилистический выбор. Отключение этого правила позволит разработчикам выбирать более читабельный стиль в каждом конкретном случае.
Версия
Это правило было введено в ESLint v8.24.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/logical-assignment-operators