A instrução Switch está mais intimamente relacionada à instrução IF e também é uma instrução de controle de processo comumente usada em outras linguagens de programação. No entanto, as correspondências do Switch são padrões congruentes. Se você não prestar atenção a esse detalhe, geralmente cometerá erros ao escrever programas.
Código:
var n = '5'; switch (n) {Caso 5: alert ('Execute Case Branch'); Break; Padrão: Alert ('Execute o ramo padrão');}resultado:
Muitas pessoas podem pensar erroneamente que o programa acima irá para o ramo de caso, mas no final, ele irá para a filial padrão. Eles não são iguais? Vamos usar a instrução IF para ver.
Código:
var n = '5'; if (n == 5) {alert ('true ramo');} else {alert ('false ramo');}resultado:
Ele pode ser correspondido em uma instrução IF, mas por que não pode ser correspondente em uma instrução SWITCH?
Isso ocorre porque o caso na instrução Switch usa o modo de convergência, o que é equivalente ao uso de três sinais iguais em IF. Vamos reescrever o código do caso
Código:
var n = '5'; switch (n) {case '5': // Reescreva o caso 5 original no caso '5'Art (' Execute Case Branch '); Break; Padrão: Alert (' Execute Padrão Ramo ');}resultado:
Depois de reescrevê
Código:
var n = '5'; if (n === 5) {alert ('true ramo');} else {alert ('false ramo');}resultado:
Como a convergência é usada, a string 5 não é igual ao número 5 e a ramificação falsa se foi.
O exemplo acima mostra que um problema que precisa receber atenção ao usar um padrão de correspondência congruente no Switch, especialmente quando os números correspondem às seqüências de caracteres.