diff options
-rw-r--r-- | files/ru/web/javascript/reference/statements/switch/index.html | 99 |
1 files changed, 68 insertions, 31 deletions
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'); }</pre> -<h3 id="Methods_for_Multi-criteria_Case">Пример: Использование нескольких значений для одного случая</h3> - -<p>Если вы хотите использовать один набор инструкций для соответствия нескольким случаям, можно использовать два способа. Первый способ является рекомендуемым, а второй - скорее трюком. Оба способа вызовут предупреждение с текстом "yes", если значение <code>foo</code> равно 0, 1, 2 или 3.</p> - -<p>Исходники этих способов здесь:</p> - -<ol> - <li><a href="http://stackoverflow.com/questions/13207927/switch-statement-multiple-cases-in-javascript">Switch statement multiple cases in JavaScript (Stack Overflow)</a></li> - <li><a href="http://stackoverflow.com/questions/21808543/multple-cripteria-single-case-switch-statement">Multiple Criteria Single Case Switch Statement (Stack Overflow)</a></li> -</ol> +<h3 id="Methods_for_Multi-criteria_Case">Цепочки case</h3> + +<h4 id="Одна_операция">Одна операция</h4> + +<p> + Этот метод использует тот факт, что после <code>case</code> нет прерывания и продолжится + выполнение следующего <code>case</code> независимо от того, соответствует ли <code>case</code> + предоставленному условию. Подробнее в примере "Что случится, если не использовать break?. +</p> + +<p> + Это пример <code>case</code> с одной операцией, где четыре разных значения отрабатывают одинаково. +</p> + +<pre class="brush: js">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.'); +}</pre> -<h4 id="Первый_способ">Первый способ</h4> +<h4 id="Цепочка_операций">Цепочка операций</h4> -<p>В первом способе используется то, что выполнение инструкции <code>switch</code> продолжится, если не использовать инструкцию <code>break</code>. Подробнее в примере "Что случится, если не использовать break?"</p> +<p> + Это пример множественных операций внутри <code>case</code>, где в зависимости от + предоставленного числа можно увидеть разный вывод. Здесь показывается, что операции + отрабатывают в том порядке, в котором расположены <code>case</code>. При этом + числовая последовательность может не соблюдаться. Также возможно примешать в + <code>case</code> строки. +</p> <pre class="brush: js">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!'); }</pre> -<h4 id="Второй_способ">Второй способ</h4> - -<p>Другой способ, менее стандартный; во второй строке, где вы ожидали увидеть <code>switch(foo)</code>, расположено постоянное значение <code>true</code>, и в случаях используются выражения вместо констант:</p> -<pre class="brush: js">var foo = 1; -switch (true) { // Постоянное значение true вместо foo - case foo >= 0 && foo <= 3: - alert('yes'); - break; - default: - alert('not'); -}</pre> +Вывод этого примера: +<table> + <tr> + <th>Значение</th> + <th>Лог</th> + </tr> + <tr><td>`foo` is `NaN` or not `1`, `2`, `3`, `4`, `5`, or `0`</td><td>Please pick a number from 0 to 5!</td></tr> + <tr><td>`0`</td><td>Output: So What Is Your Name?</td></tr> + <tr><td>`1`</td><td>Output: What Is Your Name?</td></tr> + <tr><td>`2`</td><td>Output: Your Name?</td></tr> + <tr><td>`3`</td><td>Output: Name?</td></tr> + <tr><td>`4`</td><td>Output: ?</td></tr> + <tr><td>`5`</td><td>Output: !</td></tr> +</table> <h2 id="Спецификации">Спецификации</h2> |