>for (var current = 20; ; current++) {
> if (current % 7 == 0)
> break;
>}
>console.log(current);
>// → 21
Конструкция >for
не имеет проверочной части – поэтому цикл не остановится, пока не сработает инструкция >break
.
Если вы не укажете эту инструкцию, или случайно напишете условие, которое всегда выполняется, программа зависнет в бесконечном цикле и никогда не закончит работу – обычно это плохо.
Если вы сделаете бесконечный цикл, обычно через несколько секунд среда исполнения предложит вам прервать его. Если нет, вам придётся закрыть закладку, или даже весь браузер.
Ключевое слово >continue
также влияет на исполнение цикла. Когда это слово встречается в цикле, он немедленно переходит на следующую итерацию.
Короткое обновление переменных
Особенно часто в циклах программе нужно обновить переменную, основываясь на её предыдущем состоянии.
>counter = counter + 1;
В JavaScript есть для этого короткая запись:
>counter += 1;
Подобные записи работают для многих других операторов, к примеру >result *= 2
для удвоения, или counter >-= 1
для обратного отсчёта.
Это позволяет нам сократить программу вывода чётных чисел:
>for (var number = 0; number <= 12; number += 2)
> console.log(number);
Для >counter += 1
и >counter -= 1
есть ещё более короткие записи: >counter++
и >counter--
.
Работаем с переменными при помощи switch
Часто код выглядит так:
>if (variable == "value1") action1();
>else if (variable == "value2") action2();
>else if (variable == "value3") action3();
>else defaultAction();
Существует конструкция под названием >switch
, которая упрощает подобную запись. К сожалению, синтаксис JavaScript (заимствованный из языков C и Java)в этом случае довольно странный – часто цепочка >if
/>else
выглядит лучше. Пример:
>switch (prompt("Как погодка?")) {
> case "дождь":
> console.log("Не забудь зонт.");
> break;
> case "снег":
> console.log("Блин, мы в России!");
> break;
> case "солнечно":
> console.log("Оденься полегче.");
> case "облачно":
> console.log("Иди гуляй.");
> break;
> default:
> console.log("Непонятная погода!");
> break;
>}
В блок >switch
можно поместить любое количество меток >case
. Программа перепрыгивает на метку, соответствующую значению переменной в >switch
, или на метку >default
, если подходящих меток не найдено. После этого инструкции исполняются до первой инструкции >break
– даже если мы уже прошли другую метку. Иногда это можно использовать для исполнения одного и того же кода в разных случаях (в обоих случаях «солнечно» и «облачно» программа порекомендует пойти погулять). Однако, очень легко забыть запись