Nepovinnost break v konstrukci switch-case v JavaScriptu

Příkaz break v konstrukci switch-case není povinný. Při absenci break po provedení zamýšleného case se provedou i všechny case pod ním.

Podívejme se na příklad:

javascriptlet num = 1; // předpokládejme zde číslo 1

switch (num) {
  case 1:
    console.log(1); // spustí se toto
  case 2:
    console.log(2); // spustí se i toto
  case 3:
    console.log(3); // spustí se i toto
}

Změňme hodnotu proměnné:

javascriptlet num = 2; // předpokládejme zde číslo 2

switch (num) {
  case 1:
    console.log(1);
  case 2:
    console.log(2); // spustí se toto
  case 3:
    console.log(3); // spustí se i toto
}

Změňme hodnotu proměnné:

javascriptlet num = 3; // předpokládejme zde číslo 3

switch (num) {
  case 1:
    console.log(1);
  case 2:
    console.log(2);
  case 3:
    console.log(3); // spustí se toto
}

Někdy se tato zvláštnost využívá při řešení úloh. Podívejte se na příklad:

javascriptlet num = 1;
let res;

switch (num) {
  case 1:
  case 2:
    res = 'a';
  break;
  case 3:
    res = 'b';
  break;
}

console.log(res);

Je však zřejmější vyřešit takovou úlohu pomocí if:

javascriptlet num = 1;
let res;

if (num == 1 || num == 2) {
  res = 'a';
}

if (num == 3) {
  res = 'b';
}

console.log(res);