Во-первых, оператор switch работает только для int. Я не уверен, почему javascript сохранил это ограничение от C / C ++, но он есть.
Использование вложенных блоков if-then-else вместо переключателя может привести к крайне нечитаемому коду, если вы имеете дело с более чем несколькими опциями.
Однако, как и в C и C ++, есть обходные пути, и этот включает использование «break» как goto, которые не всегда являются злом. Это ситуация (большое количество вложенных if-the-else), когда goto сделает код более эффективным и читабельным. В C / C ++ вы бы реализовали это, используя goto с меткой, находящейся в конце серии if (где теперь находится конец скобки переключателя), и пропускали переход в контекст переключателя.
switch (1) { //yes, that is a hardcoded 1, we only want the switch block for the break keyword
if (yourString == "Case 1") {
do_stuff_1();
break; // well, we're done, let's get out of here.
}
//implicit else - if you matched the first one, you'd be out of here
if (yourString == "Case 2") {
do_stuff_2();
break; // well, we're done, let's get out of here.
}
// etc.....
default:
do_error_condition();
} //end of switch