Оператор switch case проверяет javascript

Оператор switch в JS

Оператор switch используется для принятия решений. Он оценивает выражение и выполняет нужный блок кода, соответсвующий результату выражения.

Синтаксис

switch(переменная/выражение) case значение1: 
// тело case 1
break;

case значение2:
// тело case 2
break;

case значениеN:
// тело case N
break;

default:
// тело default
>

Как это работает

Оператор switch оценивает значение переменной/выражения .

  • Если результат выражения равен значению1 , выполняется тело case 1 .
  • Если результат выражения равен значению2 , выполняется тело case 2 .
  • Если результат выражения не подходит ни под одно значение N , выполняется тело default .

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

Примечание 2. Блок default тоже необязательный. Его можно не использовать.

Блок-схема

Пример 1. Используем оператор switch

let a = 12; switch (a) < case 11: a = "одиннадцать"; break; case 12: a = "двенадцать"; break; default: a "неизвестно"; break; >console.log(`Значение a — $.`);

Оператор switch оценивает значение переменной a .

  • Сначала оператор switch проверяет, не равно ли значение a значению1 — 11. Поскольку a ≠ 11, оператор switch переходит к следующему case.
  • Оператор switch проверяет, не равно ли значение a значению2 — 12. Поскольку a = 12, мы заходим в блок case 12 .
  • Оператор break завершает работу switch, и поток управления возвращается из оператора switch.

Пример 2. Проверяем тип с помощью оператора switch

let a = 11; switch (a) < case "11": a = 11; break; case 11: a = "одиннадцать"; break; case 12: a = "двенадцать"; break; default: a = "неизвестно"; break; >console.log(`Значение a — $.`);

Сначала оператор оценивает значение переменной a.

  • В JavaScript оператор switch строго проверяет значение. Поэтому значение a = 11 не совпадает со значением1 — «11» .
  • Затем оператор switch переходит ко второму случаю. Здесь результат выражения a = 11 совпадает со значением2 — 11 .
  • Оператор break завершает работу switch, и поток управления возвращает из оператора switch.

Примечание. В JavaScript оператор switch строго проверяет случаи с результатом выражения. Это значит, что значение в case и результат выражения должны быть одного типа. Обратите внимание, что в приведенном выше примере 11 не совпадает с «11».

Пример 3. Простой калькулятор с помощью оператора switch

let result; // принимаем от пользователя оператор const operator = prompt("Введите оператор: (+, -, * или / ): "); // принимаем от пользователя операнды const number1 = parseFloat(prompt("Введите первое число: ")); const number2 = parseFloat(prompt("Введите второе число: ")); switch(operator) < case "+": result = number1 + number2; console.log(`$+ $ = $`); break; case "-": result = number1 - number2; console.log(`$ - $ = $`); break; case "*": result = number1 * number2; console.log(`$ * $ = $`); break; case "/": result = number1 / number2; console.log(`$ / $ = $`); break; default: console.log('Invalid operator'); break; >
Введите оператор: +
Введите первое число: 4
Введите второе число: 5
4 + 5 = 9

В приведенной выше программе пользователю предлагается ввести оператор +, -, * или /, а также два операнда. Затем с помощью оператора switch выполняются соответсвующие оператору вычисления.

Читайте также:  Java http get file

Группировка case в операторе switch

В операторе switch случаи можно сгруппировать.

Пример 4. Используем switch с несколькими case

let fruit = "яблоко"; switch(fruit) < case "яблоко": case "манго": case "ананас": console.log("$— это фрукт."); break; default: console.log("$ — это не фрукт."); break; >

В приведенной выше программе несколько случаев сгруппированы. Ко всем сугрппированным case относится один и тот же блок кода.

То есть если fruit равно «яблоко», «манго» или «ананас», на экран в любом случае выведется сообщение о том, что это фрукт.

СodeСhick.io — простой и эффективный способ изучения программирования.

2023 © ООО «Алгоритмы и практика»

Источник

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

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

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

Синтаксис

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Python setuptools setup scripts

Теперь оба варианта 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»

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

Если совсем точно следовать работе 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 нагляднее.

Источник

switch

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

Синтаксис

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

Случай, который проверяется на соответствие выражению ( 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: !

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

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

BCD tables only load in the browser

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

Found a content problem with this page?

This page was last modified on 17 июл. 2023 г. by MDN contributors.

Your blueprint for a better internet.

Источник

Оцените статью