<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.
Проверяется условие - то что в круглых скобках должно быть равному тому, что передается в 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 написал(а):
Всё просто. Это расширяемая логика. Как раз в вашем примере и используется это:
И если бы оно работало так, как вы хотели бы, то на дверь=3 никакого действия не было бы. Для чего так написали? Или не писали ))
case 3:
case 4:
document.write("Вы выиграли утюг !<br>");
break;