This page was translated from English by the community.Learn more and join the MDN Web Docs community.
switch
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Сводка
Инструкция switch сравнивает выражение со случаями, перечисленными внутри неё, а затем выполняет соответствующие инструкции.
In this article
Синтаксис
switch (expression) { case value1: //Здесь выполняются инструкции, если результат выражения равен value1 [break;] case value2: //Инструкции, соответствующие value2 [break;] ... case valueN: //Инструкции, соответствующие значению valueN //statementsN [break;] default: //Здесь находятся инструкции, которые выполняются при отсутствии соответствующего значения //statements_def [break;]}expressionВыражение, значение которого сравнивается со всеми случаями.
case valueNСлучай, который проверяется на соответствие выражению (
expression).statementsNИнструкции, которые выполняются, если
expressionсоответствуют случаю.statements_defИнструкции, выполняемые если
expressionне соответствует ни одному случаю.
Описание
Если выражение соответствует какому-то случаю, то выполняются инструкции этого случая. Если несколько случаев соответствуют значению, только первый случай будет использован.
Сначала программа пытается найти подходящий случай, значение которого равно значению искомого выражения (используетсястрогое сравнение,===) и затем выполняет инструкции, соответствующие случаю. Если подходящего случая нет, ищется случай по умолчанию (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 isNaN or not1,2,3,4,5, or0 | 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® 2026 Language Specification> # sec-switch-statement> |