Операторы ветвления в JavaScript

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

Для решения этой задачи в JavaScript служат оператор if и switch.

IF (если)

При простейшем использовании, оператор if отделяет от основной программы кусочек, выполняемый только ЕСЛИ будет соблюдено определенное условие. В противном случае он просто будет пропущен.

Синтаксис:

	if (выражение) команда

В приведенном примере выражение должно быть логическим. То есть на него должен быть ответ — так это или нет. Например, переменная больше 5 (x>5); строка начинается с буквы "А" и т.п.

Обратите внимание, что выражение заключено в круглые скобки, что означает, что оно должно быть вычислено.

Размещение команды в той же строке позволяет сделать запись очень понятной и компактной.

Но! Такой случай встречается довольно редко. Чаще команда не одна, а несколько и более приемлемой будет следующая запись.

	if (выражение) {
		команда1;
		команда2;
		...
	}

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

Выражение может оценивать не одно, а несколько условий для объединения которых используются логические операторы && (И), || (ИЛИ), ! (НЕ). Тогда каждое условие также заключается в скобки.

	if ((x==1) && (y>=2)) alert('x = ' + x + ', a y = ' + y)

Else (иначе)

Как уже сказано выше, очень часто оператор ветвления служит для альтернативного способа работы программы. Чтобы выделить второй вариант, служит инструкция Else.

	if (выражение) {
		блок команд 1;
	}
	else {
		блок команд 2;
	}

Если логическое выражение истинно, то выполняется первый блок команд. Иначе (ложно) — второй.

Else if (другое если)

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

Для того, чтобы это сделать, можно воспользоваться следующей формой записи.

	if (x==0) {
		блок команд 1;
	}
	else if (x==1) {
		блок команд 2;
	}
	else if (x==2) {
		блок команд 3;
	}
	else {
		блок команд 4; //То есть x<0 или x>2
	}

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

В приведенном ниже примере блок команд 2 не исполняется никогда, так как оцениваемое значение всегда будет обнаружено в предыдущем условии (x>3).

	if ((x==0) || (x>3)) {
		блок команд 1;
	}
	else if (x==4) {
		блок команд 2;
	}

Оператор "?"

Очень часто нужно проанализировать условие и, в зависимости от результата, присвоить переменной то или иное значение. Использование if в этом случае лишь загромождает программу.

Синтаксис:

	a = (a>10) ? a/2 : a+1;

То есть, если a>10, то присвоим этой переменной значение, равное её половине, а иначе — увеличим её на единицу.

Во многих языках программирования имеется аналогичная функция iif().

Switch

Использование множественного if оправдано только при оценке сложных условий. Если же анализируется одно и то же, а разветвление зависит только от его значения, менее расточительным будет использование конструкции switch.

Синтаксис:

	switch(x) {
	case 0:			//Если x = 0
		блок команд 1;
		break;		//Конец блока 1, завершение switch
	case 1:			//Если x = 1
		блок команд 2;
		break;
	case 2:
		блок команд 3;
	default:			//Если x совсем другое
		блок команд 4;
		break;
	}

Каждый case завершается командой break, переводящей выполнение в конец всей конструкции switch. Проще говоря, происходит последовательный перебор case. Когда будет найдено значение, описанное в case, выполнится соответствующий блок команд, а анализа последующих case уже не будет. То есть опять возникает ситуация, когда мы можем получить никогда не исполняющийся фрагмент!


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