Switch case в Javascript

switch-case-v-javascript

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы разобрали условный оператор в javascript. В данной статье я бы хотел поговорить об операторе switch case в javascript. Данный оператор, по сути, является оператором выбора. Синтаксис его следующий:

switch(переменная) {
  case '1 значение переменной': {
    //блок операторов, который выполняется при выборе 1 значения переменной
    break;
  }
  case '2 значение переменной': {
    //блок операторов, который выполняется при выборе 2 значения переменной
    break;
  }
  case '3 значение переменной': {
    //блок операторов, который выполняется при выборе 3 значения переменной
    break;
  }
  default: {
    //блок операторов, который выполняется по умолчанию
  }
}

Смысл здесь простой: сначала конструкцией switch(переменная) задаётся переменная, от значения которой зависит, что будет выполняться. Если у нас значение переменной равно такому-то значению — выполнять данный кусок кода, если другому значению — выполнять другой кусок кода. Обратите внимание, что после блока операторов в каждом case стоит break. Если его не поставить, то код продолжит выполняться и пойдёт дальше (т.е. будут проверяться другие case), что редко бывает нужным. Если значение переменной не соответствует ни одному case, то сработает блок default, т.е. что-то по умолчанию.

Давайте теперь придумаем какой-нибудь пример использования данной конструкции. Помните в статье, посвященной циклам в Javascript, мы разобрали пример факториала числа на примере 3 циклов. Давайте теперь реализуем подобие меню. При нажатии на "1" будет выполняться итерационный цикл, на "2" — цикл с предусловием, на "3" — цикл с постусловием. Давайте напишем код:

<html>
<meta charset="utf-8"/>
<head><title>Switch case в JavaScript</title></head>
<script type="text/javascript">
function fact_iter(a) {
	var result = 1;
	for (i = 1; i <= a; i++) {result = result * i;}
	return result;
}

function fact_pred(a) {
	var result = 1;
	var i = 1;
	while (i <= a) {
	result = result * i;
	i++;
	}
	return result;
}

function fact_post(a) {
	var result = 1;
	var i = 1;
	do {
	result = result * i;
	i++;
	}
	while (i <= a)
	return result;
}

var a = 5; //число факториал, которого будем искать
var param = prompt("Каким способом посчитать факториал:\n1 - Итерационный цикл\n2 - Цикл с предсуловием\n3 - Цикл с постусловием","Выберите номер пункта...");
switch (param) {
  case "1": {
    document.write("Факториал числа равен (итерационный метод) "+fact_iter(a));
    break;
  }
  case "2": {
    document.write("Факториал числа равен (с предусловием) "+fact_pred(a));
    break;
  }
  case "3": {
    document.write("Факториал числа равен (с постусловием) "+fact_post(a));
    break;
  }
  default: {
    document.write("Вы выбрали пункт, которого нет");
    break;
  }
}
</script>
</body>
</html>

Такой вот большой пример у нас получился (заодно вспомнили и циклы, и функции). Первые 3 функции просто возвращают факториал числа, с использованием определенного цикла. Затем мы у пользователя спрашиваем, каким способом посчитать факториал числа и результат сохраняем в переменную param. Символ "\n" означает переход на новую строку. Обратите внимание, что варианты выбора стоят в кавычках (case "1"), так как переменная param имеет строковый тип (нужно сравнивать строку со строкой). Если набрать что-то другое (а не 1,2 или 3), то сработает оператор default.
По идее, всё это можно было заменить условным оператором, но там было бы много условий. Использование оператора switch case в javascript делает код более наглядным и лаконичным.

В данной статье вы узнали об операторе switch case в javascript.

Домашнее задание: обязательно наберите данный пример и проверьте работоспособность. Также попробуйте убрать везде операторы break и посмотрите что получится.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *