Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Зачем тестировщику нужна безопасность? - 16.04

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()))
  ....

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