Для чего используется конструкция switch javascript
Перейти к содержимому

Для чего используется конструкция switch javascript

  • автор:

switch

Инструкция switch сравнивает выражение со случаями, перечисленными внутри неё, а затем выполняет соответствующие инструкции.

Синтаксис

switch (expression) < case value1: //Здесь выполняются инструкции, если результат выражения равен value1 [break;] case value2: //Инструкции, соответствующие value2 [break;] . case valueN: //Инструкции, соответствующие значению valueN //statementsN [break;] default: //Здесь находятся инструкции, которые выполняются при отсутствии соответствующего значения //statements_def [break;] >

Выражение, значение которого сравнивается со всеми случаями.

Случай, который проверяется на соответствие выражению ( expression ).

Инструкции, которые выполняются, если expression соответствуют случаю.

Инструкции, выполняемые если expression не соответствует ни одному случаю.

Описание

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

Сначала программа пытается найти подходящий случай, значение которого равно значению искомого выражения (используется строгое сравнение (en-US) , ===) и затем выполняет инструкции, соответствующие случаю. Если подходящего случая нет, ищется случай по умолчанию ( default ), который не является обязательным. Если случая по умолчанию нет, выполнение продолжается на инструкции, следующей сразу после switch . По соглашению, случай default описывается последним, но это не является строгим правилом.

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

Примеры

Пример: Использование switch

В этом примере, если expr равно «Bananas», программа находит случай «Bananas» и выполняет соответствующие инструкции. При выполнении инструкции break , выполнение продолжится за пределами switch . Если бы break не было, то выполнились бы инструкции случая «Cherries».

switch (expr)  case "Oranges": console.log("Oranges are $0.59 a pound."); break; case "Apples": console.log("Apples are $0.32 a pound."); break; case "Bananas": console.log("Bananas are $0.48 a pound."); break; case "Cherries": console.log("Cherries are $3.00 a pound."); break; case "Mangoes": case "Papayas": console.log("Mangoes and papayas are $2.79 a pound."); break; default: console.log("Sorry, we are out of " + expr + "."); > console.log("Is there anything else you'd like?"); 

Пример: Что случится, если не использовать break?

Если вы не использовали инструкцию break , то будут выполнены инструкции следующего случая. И проверка на соответствие выражению не будет выполняться.

var foo = 0; switch (foo)  case -1: console.log("negative 1"); break; case 0: // foo равно 0, случай соответствует выражению и эти инструкции будут выполнены console.log(0); // ПРИМЕЧАНИЕ: здесь могла находиться забытая инструкция break case 1: // В случае 'case 0:' не было break, инструкции данного случая также будут выполнены console.log(1); break; // В конце расположен break, поэтому выполнение не перейдёт к случаю 'case 2:' case 2: console.log(2); break; default: console.log("default"); > 

Цепочки case

Одна операция

Этот метод использует тот факт, что после case нет прерывания и продолжится выполнение следующего case независимо от того, соответствует ли case предоставленному условию. Подробнее в примере «Что случится, если не использовать break?.

Это пример case с одной операцией, где четыре разных значения отрабатывают одинаково.

var Animal = "Giraffe"; switch (Animal)  case "Cow": case "Giraffe": case "Dog": case "Pig": console.log("This animal is not extinct."); break; case "Dinosaur": default: console.log("This animal is extinct."); > 
Цепочка операций

Это пример множественных операций внутри case , где в зависимости от предоставленного числа можно увидеть разный вывод. Здесь показывается, что операции отрабатывают в том порядке, в котором расположены case . При этом числовая последовательность может не соблюдаться. Также возможно примешать в case строки.

var foo = 1; var output = "Output: "; switch (foo)  case 0: output += "So "; case 1: output += "What "; output += "Is "; case 2: output += "Your "; case 3: output += "Name"; case 4: output += "?"; console.log(output); break; case 5: output += "!"; console.log(output); break; default: console.log("Please pick a number from 0 to 5!"); > 

Вывод этого примера:

Значение Лог
foo is NaN or not 1 , 2 , 3 , 4 , 5 , or 0 Please pick a number from 0 to 5!
0 Output: So What Is Your Name?
1 Output: What Is Your Name?
2 Output: Your Name?
3 Output: Name?
4 Output: ?
5 Output: !

Спецификации

Specification
ECMAScript Language Specification
# sec-switch-statement

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 7 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

Упрощайте: как использовать конструкцию switch вместо if-else в JavaScript

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

Професійний курс від robotdreams: Алгоритми та структури даних.
Знаходьте нестандартні рішення у складних робочих задачах.

Другими словами, конструкция switch — это более удобная замена if и else . Этот оператор позволяет сделать код более коротким и понятным.

Он принимает множество значений, а после сравнивает выражения со значениями из инструкции case . Если выражение и значение case друг другу соответствуют, то инструкции будут выполнены.

Синтаксис switch

Конструкция switch состоит из:

    описания с ключевым словом switch ;

Професійний курс від laba: Управління командою в бізнесі.
Створюйте ефективну робочу атмосферу.

Оператор всегда записывается в виде switch () <> , где:

() — круглые скобки, в которых записывается выражение для оценки;

<> — фигурные скобки, внутри которых находится код выполнения.

Давайте рассмотрим пример:

switch (expression) < case x: // execute case x code block break; case y: // execute case y code block break; default: // execute default code block >

Сперва выражение сравнивается с условием case x . Если выражение и условие соответствуют, код будет выполнен; break — останавливает выполнение блока.

В ситуации, когда выражение не соответствует условию, оператор переходит к выполнению условия case y . При соответствии выражения и условия break останавливает выполнение дальнейшего кода.

Інтенсівний курс від laba: Фінансовий директор.
Ефективне фінансове управління компанією.

Если выражение не соответствует условиям case x и case y — происходит выполнение блока default — он запускается в конце программы при наличии ошибки.

При пропущенном ключевом слове break операторы case не будут выдавать значение true , а программа продолжит проверять все условия.

Если инструкции break нет, то осуществляется переход к следующей инструкции switch . Отметим, что break используется для увеличения производительности программы.

Использование break

Рассмотрим пример, где значение а сравнивается со всеми вариантами case .

let a = 2 + 2; switch (a)

В case 3 совпадения нет, потому оператор приступает к выполнению case 4 . Найдено совпадение, а потому со строки alert( ‘В самый раз!’ ) будет выполнен код до следующего оператора break , который его остановит.

Без break

Что будет, если мы уберем break из нашего примера?

let a = 2 + 2; switch (a)

В этом случае выполнение осуществится по всем вариантам case . В примере будут выполнены все три alert :

alert( 'В самый раз!' ); alert( 'Много' ); alert( "Значений нет" );

Примеры со switch-case в JavaScript

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

Несколько значений для одного случая

var foo = 1; switch (foo)

Если foo совпадает с одним из case — 0, 1, 2, 3, то будет выведено сообщение с текстом yes . Без инструкции break выполнение switch продолжится.

Что будет, если case записан в один ряд?

var x = 3; switch (x)

Варианты case можно располагать не в столбик, а в один ряд — выполнение кода от этого не изменится.

Ефективний курс від robotdreams: Blockchain-розробник.
Революційні рішення в технологіях.

Вычисление дня недели

switch (new Date().getDay())

День недели — это число от 0 до 6.

Воспользуемся методом getDay () : воскресенье — case 0 , понедельник — case 1 , вторник — case 2 и так далее. Этот метод вернет значение, которое будет соответствовать дню недели для даты, которую мы укажем.

В заключение

Конструкция switch-case чаще всего используется в случаях множественного выбора. Оператор switch может использоваться для обработки сразу нескольких выражений ( case ) или диапазонов.

Switch в переводе с английского языка — «переключатель», с его помощью можно выбирать блоки кода для выполнения в соответствии со значениями заданных выражений. Все значения — это варианты case .

JavaScript: switch

Инструкция switch была придумана в качестве альтернативы для нескольких if . Обычно она используется когда нужно сравнить некоторое значение сразу с несколькими различными вариантами (другими значениями) и выполнить соответствующий фрагмент кода из предложенных вариантов.

switch (выражение) < case выражение1: // Этот фрагмент кода выполнится, если вычисленное значение выражения в скобках // равно значению выражение1 break; . case выражениеN: // Этот фрагмент кода выполнится, если вычисленное значение выражения в скобках // равно значению выражениеN break; default: // Этот фрагмент кода выполнится при отсутствии // совпадений со значениями представленных вариантов >

В круглых скобках, после ключевого слова switch , указывается выражение, значение которого будет последовательно (сверху вниз) сравниваться со значениями выражений, указанных после ключевых слов case . При сравнении значений используется оператор === .

Если соответствие значений установлено – switch начинает выполняться от соответствующего case и далее, пока не встретится инструкция break (или до конца switch , если break отсутствует). Если соответствие значений не установлено – выполняется код, расположенный после ключевого слова default .

case и default называют вариантами switch .

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

Инструкция break выполняет немедленный выход из инструкции switch . Она может располагаться в каждом варианте, но не является обязательной. При отсутствии инструкции break в каком-либо варианте управление будет передано инструкциям, относящимся к следующему варианту.

Пример работы инструкции switch :

var x = 3; switch (x) < case 1: document.write("x равен 1"); break; case 2: document.write("x равен 2"); break; case 3: document.write("x равен 3"); break; default: document.write("x >3"); >

На изображении ниже показан порядок выполнения:

js switch

Пример без инструкции break :

var x = 2; switch (x)

Для выхода из switch может использоваться не только инструкция break , но также и инструкция return (если switch находится внутри функции) или continue (если switch находится внутри цикла).

Несколько вариантов можно ассоциировать с одним и тем же программным кодом:

var x = 3; switch (x)

Варианты case не обязательно должны записываться друг под другом, для удобства их можно расположить в ряд:

var x = 3; switch (x)

Возможность использовать выражения в case позволяет писать такой код:

var num = 30; switch (true) < case num == 0: document.write("num: " + num); break; case num >5 && num < 15: document.write("num между 5 и 15"); break; case num >20: document.write("num: " + num); break; >

С этой темой смотрят:

  • if else
  • Тернарный оператор
  • Преобразование типов данных

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2023 © puzzleweb.ru | razumnikum.ru

Конструкция «switch»

Конструкция switch заменяет собой сразу несколько if .

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

Синтаксис

Конструкция switch имеет один или более блок case и необязательный блок default .

Выглядит она так:

switch(x) < case 'value1': // if (x === 'value1') . [break] case 'value2': // if (x === 'value2') . [break] default: . [break] >
  • Переменная x проверяется на строгое равенство первому значению value1 , затем второму value2 и так далее.
  • Если соответствие установлено – switch начинает выполняться от соответствующей директивы case и далее, до ближайшего break (или до конца switch ).
  • Если ни один case не совпал – выполняется (если есть) вариант default .

Пример работы

Пример использования switch (сработавший код выделен):

let a = 2 + 2; switch (a)

Здесь оператор switch последовательно сравнит a со всеми вариантами из case .

Сначала 3 , затем – так как нет совпадения – 4 . Совпадение найдено, будет выполнен этот вариант, со строки alert( ‘В точку!’ ) и далее, до ближайшего break , который прервёт выполнение.

Если break нет, то выполнение пойдёт ниже по следующим case , при этом остальные проверки игнорируются.

Пример без break :

let a = 2 + 2; switch (a)

В примере выше последовательно выполнятся три alert :

alert( 'В точку!' ); alert( 'Перебор' ); alert( "Нет таких значений" );

Любое выражение может быть аргументом для switch/case

И switch и case допускают любое выражение в качестве аргумента.

let a = "1"; let b = 0; switch (+a)

В этом примере выражение +a вычисляется в 1 , что совпадает с выражением b + 1 в case , и следовательно, код в этом блоке будет выполнен.

Группировка «case»

Несколько вариантов case , использующих один код, можно группировать.

Для примера, выполним один и тот же код для case 3 и case 5 , сгруппировав их:

let a = 3; switch (a) < case 4: alert('Правильно!'); break; case 3: // (*) группируем оба case case 5: alert('Неправильно!'); alert("Может вам посетить урок математики?"); break; default: alert('Результат выглядит странновато. Честно.'); >

Теперь оба варианта 3 и 5 выводят одно сообщение.

Возможность группировать case – это побочный эффект того, как switch/case работает без break . Здесь выполнение case 3 начинается со строки (*) и продолжается в case 5 , потому что отсутствует break .

Тип имеет значение

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

Для примера, давайте рассмотрим следующий код:

let arg = prompt("Введите число?"); switch (arg)
  1. Для ‘0’ и ‘1’ выполнится первый alert .
  2. Для ‘2’ – второй alert .
  3. Но для 3 , результат выполнения prompt будет строка «3» , которая не соответствует строгому равенству === с числом 3 . Таким образом, мы имеем «мёртвый код» в case 3 ! Выполнится вариант default .

Задачи

Напишите «if», аналогичный «switch»

важность: 5

Напишите if..else , соответствующий следующему switch :

switch (browser)

Если совсем точно следовать работе switch , то if должен выполнять строгое сравнение ‘===’ .

Впрочем, для таких строк, подойдёт и обычное сравнение ‘==’ .

if(browser == 'Edge') < alert("You've got the Edge!"); >else if (browser == 'Chrome' || browser == 'Firefox' || browser == 'Safari' || browser == 'Opera') < alert( 'Okay we support these browsers too' ); >else

Обратите внимание: конструкция browser == ‘Chrome’ || browser == ‘Firefox’ . разбита на несколько строк для лучшей читаемости.

Но всё равно запись через switch нагляднее.

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

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