Операторы циклов в JavaScript

Как мы уже обсуждали, довольно часто нужно повторять действия. Гораздо проще описать это один раз, а потом просто осуществлять повтор.

Цикл For

Цикл, служащий для повторения инструкций определенное число раз.

Синтаксис:

	for(значение счетчика; условие завершения; приращение счетчика)
	  {повторяемый набор инструкций;
		[break;]
		[continue;]
	}

Для значения счетчика указывается имя и производится его инициализация (присвоение начального значения).

Под проверкой условия следует понимать логическое выражение, анализируемое перед началом каждого цикла. При достижении им истинного значения (true), цикл завершится.

Необязательная команда break завершает выполнение цикла. Как правило, она задействуется внутри if, дополнительно оценивающего обстановку. Например, нужно поделить переменную на набор из 1000 чисел, то есть повторить деление 1000 раз. Однако, если одно из чисел равно нулю, мы хотим вывести сообщение об ошибке и завершить действия.

Необязательная команда continue прерывает выполнение тела цикла и запускает цикл сначала (новая итерация). При этом счетчик приращивается в соответствии с заданным условием.

Для обозначения счетчика используется числовая переменная. В примере будет использовано имя count, хотя для краткости записи чаще всего используют имена i и/или j.

	for(var count = 2; count < 11; count++)
	  {document.write(count + '<br>');}

В приведенном примере происходит объявление (но оно могло быть сделано и ранее) и инициализация счетчика с именем count; задается условие, согласно которому он должен быть не более 10; в качестве приращения (инкремента) указано увеличение на единицу при каждом проходе.

Команда в цикле всего одна: вывод в окно браузера. При каждом выполнении цикла будет выведено текущее значение счетчика и символ перевода строки. Таким образом, мы получим список чисел от 2 до 10, по одному в каждой строке.

В качестве инкремента вместо count++ можно было бы использовать count=count+2. Тогда на экран вывелся бы список четных чисел от 2 до 10.

Цикл For/in

Поскольку язык JavaScript является объектно-ориентированным, то есть во многом предназначенным для работы с объектами. Цикл for/in часто служит для того, чтобы проанализировать каждое свойство определенного объекта.

Поскольку массив также является объектом, такой цикл можно использовать и для перебора его элементов.

Пока данный материал будет опущен.

Цикл While (пока)

Синтаксис:

	while (выражение) {
		блок команд (тело) цикла
		[break;]
		[continue;]
	}

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

Цикл Do/while

Этот цикл отличается от цикла while только тем, что выполняется хотя бы один раз. Это хорошо понятно из синтаксиса.

Синтаксис:

	do {
		блок команд (тело) цикла
		[break;]
		[continue;]
	} while (выражение)

Как видно, проверка условия осуществляется в конце. То есть тело цикла исполняется один раз (обязательно), а потом будет повторяться только в случае истинности выражения проверки.

Команда continue может вызвать здесь весьма печальные последствия, так как не происходит проверки условия.

Бесконечный цикл

В ряде случаев может возникнуть так называемый бесконечный цикл (newerending cycle). Это возникает, если условие выхода не может быть достигнуто.

Для того, чтобы избежать подобных ошибок, в браузеры встроена определенная защита: если цикл не завершается за определенное время, предлагается его прервать.

В приведенном ниже примере переменная i должна изменяться в сторону уменьшения. Если этого не будет, то цикл продолжится «до окончания электричества».

	while (i>0) {тело цикла}

На практике, задание заведомо невыполнимого условия выхода из цикла, хоть и редко, но используется. Выход осуществляется внутрицикловой командой break.


Copyright © 1993–2020 Мацкявичюс Д.А. Все права защищены.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.