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

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

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

```cpp
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])` ложно, цикл будет бесконечно проверять первый элемент\.

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

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