A opcionalidade do break na construção switch-case em JavaScript

O comando break na construção switch-case não é obrigatório. Na ausência do break, após a execução do case pretendido, todos os case abaixo dele também serão executados.

Vamos ver um exemplo:

javascriptlet num = 1; // suponha que o número aqui seja 1

switch (num) {
  case 1:
    console.log(1); // isto será executado
  case 2:
    console.log(2); // isto também será executado
  case 3:
    console.log(3); // e isto também será executado
}

Vamos alterar o valor da variável:

javascriptlet num = 2; // suponha que o número aqui seja 2

switch (num) {
  case 1:
    console.log(1);
  case 2:
    console.log(2); // isto será executado
  case 3:
    console.log(3); // isto também será executado
}

Vamos alterar o valor da variável:

javascriptlet num = 3; // suponha que o número aqui seja 3

switch (num) {
  case 1:
    console.log(1);
  case 2:
    console.log(2);
  case 3:
    console.log(3); // isto será executado
}

Às vezes, essa característica é utilizada na resolução de problemas. Veja o exemplo:

javascriptlet num = 1;
let res;

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

console.log(res);

No entanto, é mais evidente resolver esse tipo de problema usando if:

javascriptlet num = 1;
let res;

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

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

console.log(res);