Оператор switch ... case является альтернативой оператору if … else if … else, который делает почти то же самое. Оператор switch … case проверяет переменную или выражение по ряду условий, пока не найдет совпадение, а затем выполняет блок кода, соответствующий этому совпадению. Это синтаксис:

switch(x){
    case value1:
        // Код, который будет выполнен, если x === value1
        break;
    case value2:
        // Код, который будет выполнен, если x === value2
        break;
    ...
    default:
        // Код, который будет выполнен, если x отличается от всех значений
}

Рассмотрим следующий пример, в котором отображается название дня недели.

var d = new Date();
	
switch(d.getDay()) {
	case 0:
		alert("Today is Sunday.");
		break;
	case 1:
		alert("Сегодня понедельник.");
		break;
	case 2:
		alert("Сегодня вторник.");
		break;
	case 3:
		alert("Сегодня среда.");
		break;
	case 4:
		alert("Today is Thursday.");
		break;
	case 5:
		alert("Сегодня пятница.");
		break;
	case 6:
		alert("Сегодня суббота.");
		break;   
	default:
		alert("Информация о сегодняшнем дне недоступна.");
		break;
}

Метод getDay() возвращает день недели в виде числа от 0 до 6, где 0 представляет воскресенье. Подробнее см. Руководство по работе с датами и временем в JavaScript, чтобы узнать больше об этих методах.

В операторе switch…case значение выражения или переменной сравнивается со значением case с помощью оператора строгого равенства (===). Это означает, что если x = "0", это не соответствует case 0:, потому что их типы данных не равны.

У оператора switch … case есть существенное отличиет от оператора if … else. Оператор switch выполняется построчно (то есть оператор за оператором), и как только JavaScript находит case, который оценивается как true, он не только выполняет код, соответствующий этому предложению case, но также выполняет все последующие case до конца автоматически.

Чтобы предотвратить это, вы должны включать оператор break после каждого case (как вы можете видеть в приведенном выше примере). Оператор break указывает интерпретатору JavaScript выйти из блока оператора switch … case после выполнения кода, связанного с первым истинным условием.

Однако оператор break не требуется для последнего case, т.е. default. Хотя, это хорошая практика программирования — завершать последнее условие. Это предотвращает возможную ошибку программирования позже, если к оператору switch будет добавлен другой оператор case.

Условие default не обязательно должно быть последним, которое появляется в операторе switch. Вот пример, где default не является последним условием.

var d = new Date();

switch(d.getDay()) {
    default: 
        alert("Ждем выходных.");
        break;
    case 6:
        alert("Today is Saturday.");
        break; 
    case 0:
        alert("Сегодня воскресенье.");
}

Совместное использование нескольких Cases

Каждое значение должно быть уникальным в инструкции switch, но при этом несколько сases могут использовать одно и то же действие, как показано здесь:

var d = new Date();

switch(d.getDay()) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        alert("It is a weekday.");
        break; 
    case 0:
    case 6:
        alert("Это выходной день.");
        break;
    default: 
        alert("Enjoy every day of your life.");
}

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.