Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V7013. Suspicious assignment in the condition. A comparison may have been intended.

03 Апр 2026

Анализатор обнаружил присваивание в условии. Скорее всего, вместо присваивания подразумевался оператор сравнения.

Рассмотрим пример:

function foo() {
  let mode = ....;

  if (mode = 1) {  // <=
    return; 
  } 
  ....
}

В коде допущена опечатка: вместо сравнения переменной mode с единицей происходит присваивание значения. В итоге из-за опечатки условие всегда будет истинно, и код не будет работать так, как изначально предполагалось.

Корректный вариант кода выглядит следующим образом:

if (mode == 1) {
  ....
}

В некоторых случаях присваивание внутри условия может быть использовано для сокращения размера кода:

let result = ....; 
while (result = exec()) {
  ....
}

Стоит отметить, что это плохая практика: при работе с подобным кодом нужно тратить больше времени на его изучение, чтобы понять, является ли он следствием опечатки или желанием сократить программу.

Если всё же требуется выполнить присваивание в условии, можно дополнительно заключить его в скобки:

while ((result = exec()))
  ....

Анализатор и многие компиляторы/интерпретаторы воспринимают подобный код как безопасный. Также это подсказка человеку, что код не содержит ошибку.

Вы нашли спрятанный ссееккрреетт и, возможно, успеете забрать один из ппррииззоовв. Подробнее.

Диагностическое правило классифицируется как: