From cb3bfab50275109a9176da39ad48a3040d6c0222 Mon Sep 17 00:00:00 2001 From: Eugene Maslovich Date: Fri, 10 Dec 2021 20:19:03 +0300 Subject: Translate actual english doc for "case chains" (#3300) --- .../reference/statements/switch/index.html | 99 +++++++++++++++------- 1 file changed, 68 insertions(+), 31 deletions(-) (limited to 'files/ru') diff --git a/files/ru/web/javascript/reference/statements/switch/index.html b/files/ru/web/javascript/reference/statements/switch/index.html index b3bdc86f88..1399232f93 100644 --- a/files/ru/web/javascript/reference/statements/switch/index.html +++ b/files/ru/web/javascript/reference/statements/switch/index.html @@ -103,45 +103,82 @@ switch (foo) { console.log('default'); } -

Пример: Использование нескольких значений для одного случая

- -

Если вы хотите использовать один набор инструкций для соответствия нескольким случаям, можно использовать два способа. Первый способ является рекомендуемым, а второй - скорее трюком. Оба способа вызовут предупреждение с текстом "yes", если значение foo равно 0, 1, 2 или 3.

- -

Исходники этих способов здесь:

- -
    -
  1. Switch statement multiple cases in JavaScript (Stack Overflow)
  2. -
  3. Multiple Criteria Single Case Switch Statement (Stack Overflow)
  4. -
+

Цепочки 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.');
+}
-

Первый способ

+

Цепочка операций

-

В первом способе используется то, что выполнение инструкции switch продолжится, если не использовать инструкцию break. Подробнее в примере "Что случится, если не использовать break?"

+

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

var foo = 1;
+var output = 'Output: ';
 switch (foo) {
-    case 0:
-    case 1:
-    case 2:
-    case 3:
-        alert('yes');
-        break;
-    default:
-        alert('not');
+  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!');
 }
-

Второй способ

- -

Другой способ, менее стандартный; во второй строке, где вы ожидали увидеть switch(foo), расположено постоянное значение true, и в случаях используются выражения вместо констант:

-
var foo = 1;
-switch (true) { // Постоянное значение true вместо foo
-    case foo >= 0 && foo <= 3:
-        alert('yes');
-        break;
-    default:
-        alert('not');
-}
+Вывод этого примера: + + + + + + + + + + + + +
ЗначениеЛог
`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: !

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

-- cgit v1.2.3-54-g00ecf