Alguém disse uma vez que um programa realmente bom não tem se ... Else, é claro que o Switch não é tão bom como se ... O uso do comutador é proibido na especificação JS.
O objeto de comando resolve perfeitamente esse problema.
Cite um blog estrangeiro:
O JavaScript possui boas declarações de fluxo de controle, que geralmente são embrulhadas em aparelhos encaracolados. Mas há uma exceção: Switch… Declaração do caso. O estranho sobre o Switch ... Caso é que você deve adicionar a quebra de palavra -chave no final de cada caso para impedir que o controle do processo viaje até a próxima declaração de caso. A viagem no tempo refere -se ao método de permitir que vários casos sejam executados. Quando a quebra esperada não for encontrada, o controle será automaticamente entregue ao próximo caso. No entanto, assim como semicolons e aparelhos encaracolados, você pode inadvertidamente esquecer de escrever pausas. Quando isso acontece, verificações de erro posteriores são mais dolorosas porque a declaração em si está correta. Portanto, é um bom hábito escrever um caso ... quebrar em pares.
Geralmente dizemos que o JavaScript possui literais de objetos elegantes e funções de nível superior, que tornam muito simples o método específico. O objeto criado para consultas de método, chamamos de objeto ativo ou objeto de comando, usado em muitos padrões de design de software, incluindo padrões de comando poderosos e úteis.
Exemplo:
A cópia do código é a seguinte:
// Método de comutação
função testswitch (nome) {
Switch (nome) {
Caso '1':
retornar 'hack';
quebrar;
Caso '2':
retornar 'barra';
quebrar;
Caso '3':
retornar 'run';
quebrar;
padrão:
retornar falso;
quebrar;
}
}
// Use o objeto de comando
função testfn (nome) {
var nomes = {
'1': function () {
retornar 'hack';
},
'2': function () {
retornar 'barra';
},
'3': function () {
retornar 'run';
}
};
if (typeof nomes [name]! == 'function') {
retornar falso;
}
retornar nomes [nome] ();
}
// Resultados do teste
var result1 = testswitch ('1');
var result2 = testfn ('2');
console.info (resultado1, resultado2);