[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Какая у switch логика ?
GQU
<script type="text/javascript"> 
var dver = parseInt(prompt("Выбирите дверь от 1 до 5<br>"));
switch(dver){
case 1:
document.write("Вы выиграли авто !<br>");

case 2:
document.write("Вы выигали мотоцикл !<br>");
break;

case 3:
case 4:
document.write("Вы выиграли утюг !<br>");
break;

case 5:
document.write("Вы выиграли путешествие !<br>");
break;

default:
document.write("Вы ввели не верное число !<br>");
}
</script>


Если убрать один break, в prompt ввести 1, почему результат такой:
Вы выиграли авто !
Вы выиграли мотоцикл !

Какая у switch логика ?





Спустя 11 минут, 40 секунд (23.07.2011 - 19:06) Haotarez написал(а):
switch - переключатель - говорящее название.
Проверяется условие - то что в круглых скобках должно быть равному тому, что передается в case. Выполняется сие до первого вхождения break. Другими словами в вашем случае проверяется равен ли dver числу 1 , если да то выводится "Вы выиграли авто" и т.к. после выполнения нет остановки (break) для переключателя, то выполнится и следующая конструкция даже не смотря на то, что dver не равна числу 2 и будет выполняться до первого вхождения break или до самого конца переключателя. Если среди всех case нет подходящего значения для проверяемой переменной выполнится конструкция default.

Спустя 1 час, 20 минут, 22 секунды (23.07.2011 - 20:26) GQU написал(а):
Просто я всегда задумываюсь над подобными вещами, вот зачем так сделали, разработчики могли в case встроить break, чтоб все это автоматизировать, а тут оставили значит это зачем то нужно, должен быть пример где это можно как то реально использовать

Спустя 1 час, 57 минут, 35 секунд (23.07.2011 - 22:24) quickxyan написал(а):
GQU
хм, для начала поставь за тебя брейк, а потом и напиши вместо тебя весь код.
а потом еще разработчики должны будут сделать такую штуку - включешь комп и говоришь - хочу парсер сайта такого-то и чтобы все хранило в БД и еще хочу кофе))

раз так сделали, значит так надо, а если не нравиться, то напиши разработчикам, что есть такая идея с кейс-структурой - авось прокатит ))))

Спустя 1 час, 6 минут, 50 секунд (23.07.2011 - 23:31) Nikitian написал(а):
Всё просто. Это расширяемая логика. Как раз в вашем примере и используется это:

case 3:
case 4:
document.write("Вы выиграли утюг !<br>");
break;
И если бы оно работало так, как вы хотели бы, то на дверь=3 никакого действия не было бы. Для чего так написали? Или не писали ))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.