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

Вебинар: Стратегия без иллюзий: как превращать цели в результаты - 19.08

menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V7038. The loop condition may be incorrect. The condition and update expression of the loop use different variables.

05 Авг 2026

Анализатор обнаружил цикл for, счётчик которого не обновляется в блоке обновления цикла. Вместо этого обновляется другая переменная. Скорее всего, это опечатка, из-за которой цикл окажется бесконечным или завершится некорректно.

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

function findFirst(arr, len, predicate) {
  for (let i = 0; i < Math.min(len, arr.length); ++len) {
    if (predicate(arr[i]))
      return i;
  }
  return -1;
}

Функция должна найти индекс первого элемента массива, ограниченного длиной len, который удовлетворяет предикату. Однако в блоке обновления цикла инкрементируется переменная len, а не i. Если выражение predicate(arr[0]) ложно, цикл будет бесконечно проверять первый элемент.

Исправленный вариант:

function findFirst(arr, len, predicate) {
  for (let i = 0; i < Math.min(len, arr.length); ++i) {
    if (predicate(arr[i]))
      return i;
  }
  return -1;
}

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