Вебинар: Стратегия без иллюзий: как превращать цели в результаты - 19.08
Анализатор обнаружил цикл 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;
}
Диагностическое правило классифицируется как:
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: