Кто -то однажды сказал, что действительно хорошей программы нет, если ... Эльсе, конечно, переключение не так хорошо, как если бы ... Эль. Использование переключателя запрещено в спецификации JS.
Командный объект идеально решает эту проблему.
Цитируйте иностранный блог:
JavaScript имеет хорошие операторы потока управления, которые часто обертываются в кудрявые скобки. Но есть исключение: Switch ... оператор CASE. Странная вещь о коммутаторе ... случай, когда вы должны добавить разрыв ключевых слов в конце каждого случая, чтобы предотвратить перемещение управления процессом к следующему оператору дела. Путешествие во времени относится к методу разрешения выполнять несколько случаев. Когда ожидаемый перерыв не будет обнаружен, элемент управления будет автоматически передаваться в следующий случай. Однако, как и полуколоны и кудрявые брекеты, вы можете непреднамеренно забыть написать перерывы. Когда это произойдет, более поздние проверки ошибок более болезненны, потому что само утверждение верно. Следовательно, это хорошая привычка писать чехол ... разорвать парами.
Мы обычно говорим, что JavaScript имеет элегантные объектные литералы и функции верхнего уровня, которые делают конкретные запросы метода очень простыми. Объект, созданный для запросов метода, мы называем его активным объектом или командным объектом, который используется во многих шаблонах проектирования программного обеспечения, включая мощные и полезные командные шаблоны.
Пример:
Кода -копия выглядит следующим образом:
// метод переключения
Функция TestSwitch (имя) {
Switch (имя) {
случай '1':
вернуть 'chack';
перерыв;
Случай '2':
вернуть 'Slash';
перерыв;
Случай 3 ':
вернуть 'запустить';
перерыв;
по умолчанию:
вернуть ложь;
перерыв;
}
}
// Использование объекта команды
функция testfn (name) {
var names = {
'1': function () {
вернуть 'chack';
},
'2': function () {
вернуть 'Slash';
},
'3': function () {
вернуть 'запустить';
}
};
if (typeof names [name]! == 'function') {
вернуть ложь;
}
вернуть имена [name] ();
}
// результаты теста
var result1 = testswitch ('1');
var result2 = testfn ('2');
console.info (result1, result2);