> Сколько раз выполнится console.log в цикле с использованием оператора остатка от деления в JavaScript? (JavaScript)

Уровень: middle · Роль: frontend · Категория: Технические вопросы

Компании: TYMY

Стек: JavaScript

> Пример ответа

Короткий ответ

Количество выполнений console.log зависит от условия в цикле и оператора остатка от деления. В типичном примере for (let i = 0; i < 10; i++) { if (i % 2 === 0) console.log(i); } лог выполнится 5 раз - для чётных чисел от 0 до 8. Если условие другое, например i % 3 === 0, то будет 4 вызова. Точное число всегда равно количеству итераций, удовлетворяющих условию с остатком.

Подробное объяснение

Оператор % возвращает остаток от деления левого операнда на правый. В цикле он часто используется для фильтрации значений по кратности или чётности. Ключевой момент: console.log выполняется не на каждой итерации, а только когда условие с % истинно. Число выполнений = количество итераций, где i % N === 0 (или другое условие). Для диапазона от 0 до length - 1 это примерно Math.floor(length / N) + 1 (если начинаем с 0, так как 0 делится на любое число без остатка). Важно учитывать, что 0 % N === 0 всегда, поэтому первая итерация часто попадает в условие.

На практике

В реальном коде такие циклы встречаются при:

  • выводе элементов через один (например, для стилизации)
  • разбиении данных на группы по N элементов
  • проверке кратности для бизнес-логики (например, каждые 5-й запрос)
  • реализации пагинации или каруселей

Часто разработчики путаются, когда начинают счёт с 1 вместо 0 - тогда количество попаданий может отличаться на единицу. Также стоит помнить, что при отрицательных числах в JavaScript % возвращает отрицательный остаток, что может сломать условие === 0, если не использовать Math.abs().

Пример кода

JAVASCRIPT
// Пример 1: чётные числа от 0 до 9
let count = 0;
for (let i = 0; i < 10; i++) {
if (i % 2 === 0) {
console.log(i); // 0, 2, 4, 6, 8 - 5 раз
count++;
}
}
console.log(count); // 5
// Пример 2: кратность 3 от 1 до 10
count = 0;
for (let i = 1; i <= 10; i++) {
if (i % 3 === 0) {
console.log(i); // 3, 6, 9 - 3 раза
count++;
}
}
console.log(count); // 3
// Пример 3: с отрицательными числами
count = 0;
for (let i = -5; i < 5; i++) {
if (i % 2 === 0) {
console.log(i); // -4, -2, 0, 2, 4 - 5 раз
count++;
}
}
console.log(count); // 5

Как отвечать на собеседовании

Начните с уточнения: "Зависит от конкретного условия и диапазона". Затем приведите формулу: количество = число итераций, где i % N === 0. Объясните, что для диапазона от 0 до M это Math.floor(M / N) + 1. Покажите на примере с чётными числами. Если спросят про отрицательные - упомяните особенность JavaScript с отрицательным остатком. Не заучивайте ответ - покажите, как рассуждаете: разбиваете задачу на итерации и условие.

Что проверяет интервьюер

  • Понимание работы оператора % и его особенностей (включая отрицательные числа)
  • Умение анализировать циклы и условия
  • Внимательность к границам диапазона (включительно/исключительно)
  • Способность быстро подсчитать количество итераций без выполнения кода
  • Знание, что 0 % N === 0 - частая ловушка

Типичные ошибки

  • Ответ "10 раз" без учёта условия - лог выполняется не на каждой итерации
  • Забывают, что 0 % N === 0, и считают на единицу меньше
  • Путают i % 2 === 0 (чётные) с i % 2 === 1 (нечётные)
  • Не учитывают, что при старте с 1 количество попаданий может быть меньше
  • Думают, что % работает как деление, а не как остаток
  • Игнорируют отрицательные числа, где -4 % 2 === 0, но -3 % 2 === -1

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью