Условия и циклы
Программа выполняется сверху вниз, строка за строкой. Инструкции управления меняют этот порядок: ветвление выбирает, какой кусок кода выполнить, а цикл повторяет кусок кода, пока выполняется условие.
В JavaScript условие не обязано быть булевым: if, while и for приводят его к true или false по правилам truthy и falsy, а switch сравнивает значения строго, как ===. Оба правила подробно разобраны в теме Приведение типов и операторы.
Карта темы
- if и else — ветвление по условию, цепочка
else ifи тернарный оператор как короткая форма. - switch — выбор ветки по значению, строгое сравнение,
defaultи проваливание безbreak. - Циклы —
for,while,do...while: из чего состоит цикл и когда какой выбрать;for...ofиfor...in. - break и continue — досрочный выход из цикла, пропуск шага и метки для вложенных циклов.
Частые ошибки и ловушки
| Ошибка | Последствие |
|---|---|
if (x = 5) вместо if (x === 5) | Присваивание: x становится 5, условие всегда истинно |
Забытый break в case | Выполнение проваливается в следующие ветки switch |
switch по строке '1' с case 1: | Ни одна ветка не совпадёт: switch сравнивает строго, без приведения |
Граница i <= arr.length | Лишний шаг: последний индекс массива — arr.length - 1, на лишнем шаге читается undefined |
Забыть изменить счётчик в while | Условие никогда не станет ложным — бесконечный цикл |
continue в while до увеличения счётчика | Счётчик перестаёт расти — бесконечный цикл |
break внутри колбэка forEach | SyntaxError: forEach нельзя прервать, нужен обычный цикл |
Значение для собеседований
Условия и циклы редко спрашивают напрямую, зато они внутри каждой задачи «что выведет программа» и каждой задачи на лайвкодинге. Интервьюер смотрит, проходите ли вы цикл по шагам аккуратно: какое значение у счётчика на каждой итерации, где сработает break, куда перейдёт continue.
Что обычно проверяют:
- Сколько раз выполнится тело цикла и чему равен счётчик после него.
- Чем
whileотличается отdo...while. - Что делает
switchбезbreakи как он сравнивает значения. - Чем
breakотличается отcontinueи как выйти из вложенного цикла. - Чем
for...ofотличается отfor...in.
Типичный неверный ответ: «continue завершает цикл». На самом деле continue пропускает только остаток текущего шага, и цикл переходит к следующему; завершает цикл break.