Выразительный JavaScript (Хавербеке) - страница 19

>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 – даже если мы уже прошли другую метку. Иногда это можно использовать для исполнения одного и того же кода в разных случаях (в обоих случаях «солнечно» и «облачно» программа порекомендует пойти погулять). Однако, очень легко забыть запись