У меня есть переключатель заявление, как это:Как выполнить несколько блоков кода с определенными случаями в инструкции switch?
switch(a) {
case 0:
// do something
break;
case 1:
// do something else
break;
}
То, что я хочу сделать, это выполнить оба блока кода, когда a == 2
например. Я хотел бы написать примерно так:
switch(a) {
case 0:
case 2:
// do something
break;
case 1:
case 2:
// do something else
break;
}
, но очевидно, что это не сработает, потому что первый оператор break заканчивает работу всего оператора switch.
Единственный способ, которым я мог придумать писали вспомогательные функции:
function case0() {
// do something
}
function case1() {
// do something else
}
switch(a) {
case 0:
case0();
break;
case 1:
case1();
break;
case 2:
case0();
case1();
break;
}
Это решение кажется немного многословным и уродливым для меня. Есть ли лучший способ достичь того, чего я хочу?
Выражения 'switch' достаточно сложны. То, что вы предлагаете, - это изменение того, как они работают на фундаментальном уровне. Почему бы не использовать таблицу сопоставления, где вы можете иметь ссылки на функции? '{2: function() {...}}' например. – tadman
Ну, основная причина, по которой я хочу сохранить его в 'switch', - это то, что я построил свой проект на операторах' switch', и я не хочу переписывать все это во что-то другое, просто чтобы иметь возможность делать то, что я описал. – BoltKey
Что вы хотите и что может сделать JavaScript, это две разные вещи. Вы хотите сгибаться к реальности или тратить свою жизнь на борьбу с ней? Вы можете [просить группу ECMAScript через TC39] (https://tc39.github.io/process-document/), если хотите. Иногда подход, который мы считаем лучшим, не ограничивается. Изучайте, адаптируйте, двигайтесь дальше. – tadman