Ошибки начинающих при работе с циклом while в JavaScript

Цикл while может выполняться бесконечно (это приведет к зависанию скрипта и страницы браузера), достаточно передать ему выражение, которое никогда не станет ложным. Например, так:

let test = true; while (test === true) { /* Написанный здесь код будет выполняться "вечно" (пока скрипт не будет остановлен принудительно). Не стоит это повторять - это приведет к зависанию страницы браузера! */ }

Начинающие программисты время от времени загоняют свою программу в бесконечный цикл (с вами это тоже обязательно случится пару раз). Давайте рассмотрим распространенные ошибки начинающих.

Ошибка 1

Пусть есть вот такой цикл, выводящий числа от 1 до 10:

let i = 1; while (i <= 10) { console.log(i); i++; }

Представим теперь, что программист забыл сделать увеличение счетчика в цикле:

let i = 1; while (i <= 10) { console.log(i); }

В этом случае цикл будет выполнятся бесконечно, так как условие, при котором цикл закончится, никогда не будет достигнуто.

Ошибка 2

Пусть опять наш программист хотел выводить числа от 1 до 10, однако, вместо ++ написал --:

let i = 1; while (i <= 10) { console.log(i); i--; // перепутал ++ и -- }

В этом случае, хотя счетчик и изменяется, но он изменяется не в ту сторону - и опять условие никогда не будет достигнуто.

Цикл не запускается

Бывает и обратная проблема - можно так написать код, что условие цикла уже изначально будет неверно и цикл просто не запустится.

Пусть, к примеру, программист хотел вывести столбец чисел от 1 до 10, однако, вместо условия i <= 10, написал условие i >=:

let i = 1; while (i >= 10) { console.log(i); i++; }

В таком случае цикл просто не начнется, так как условие изначально неверно.

Бывает и так, что некоторым начинающим кажется, что цикл крутится не пока условие верно, а наоборот - цикл крутится пока условие не верно и остановится, когда оно станет верным.

Вот пример такого кода:

let i = 1; while (i == 10) { // зачем-то написано == console.log(i); i++; }

При таком условии цикл вообще не начнется, так как условие просто изначально не верно.

Задачи

В следующем коде программист вывел числа от 10 до 1:

let i = 10; while (i >= 1) { console.log(i); }

В коде, однако, была допущена ошибка, которая привела к тому, что цикл выполняется бесконечно. Исправьте ошибку программиста.

В следующем коде программист вывел числа от 10 до 1:

let i = 10; while (i >= 1) { console.log(i); i++; }

В коде, однако, была допущена ошибка, которая привела к тому, что цикл выполняется бесконечно. Исправьте ошибку программиста.

В следующем коде программист вывел числа от 10 до 1:

let i = 10; while (i <= 0) { console.log(i); i--; }

В коде, однако, была допущена ошибка, которая привела к тому, что на экран ничего не вывелось. Исправьте ошибку программиста.

В следующем коде программист вывел числа от 10 до 1:

let i = 10; while (i == 0) { console.log(i); i--; }

В коде, однако, была допущена ошибка, которая привела к тому, что на экран ничего не вывелось. Исправьте ошибку программиста.

В следующем коде программист вывел числа от 10 до 1:

let i = 10; while (i == 10) { console.log(i); i--; }

В коде, однако, была допущена ошибка, которая привела к тому, что цикл вывел только число 10 и закончил свою работу. Исправьте ошибку программиста.