V7013. Suspicious assignment in the condition. A comparison may have been intended.
Анализатор обнаружил присваивание в условии. Скорее всего, вместо присваивания подразумевался оператор сравнения.
Рассмотрим пример:
function foo() {
let mode = ....;
if (mode = 1) { // <=
return;
}
....
}
В коде допущена опечатка: вместо сравнения переменной mode с единицей происходит присваивание значения. В итоге из-за опечатки условие всегда будет истинно, и код не будет работать так, как изначально предполагалось.
Корректный вариант кода выглядит следующим образом:
if (mode == 1) {
....
}
В некоторых случаях присваивание внутри условия может быть использовано для сокращения размера кода:
let result = ....;
while (result = exec()) {
....
}
Стоит отметить, что это плохая практика: при работе с подобным кодом нужно тратить больше времени на его изучение, чтобы понять, является ли он следствием опечатки или желанием сократить программу.
Если всё же требуется выполнить присваивание в условии, можно дополнительно заключить его в скобки:
while ((result = exec()))
....
Анализатор и многие компиляторы/интерпретаторы воспринимают подобный код как безопасный. Также это подсказка человеку, что код не содержит ошибку.