Die Switch -Anweisung ist am engsten mit der IF -Anweisung verwandt und ist auch eine Prozesskontrollanweisung, die üblicherweise in anderen Programmiersprachen verwendet wird. Die Switch -Übereinstimmungen sind jedoch kongruente Muster. Wenn Sie nicht auf dieses Detail achten, werden Sie beim Schreiben von Programmen häufig Fehler machen.
Code:
var n = '5'; Switch (n) {Fall 5: alert ('Case -Zweig'); Break; Standard: alert ('Standard -Zweiglager ausführen');};};Ergebnis:
Viele Menschen mögen fälschlicherweise glauben, dass das obige Programm in den Fallzweig geht, aber am Ende wird es in die Standardzweig. Sind sie nicht gleich? Verwenden wir die IF -Anweisung, um zu sehen.
Code:
var n = '5'; if (n == 5) {alert ('True Branch');} else {alert ('false ast');};Ergebnis:
Es kann in einer IF -Anweisung abgestimmt werden, aber warum kann es nicht in einer Switch -Anweisung abgestimmt werden?
Dies liegt daran, dass der Fall in der Switch -Anweisung den Konvergenzmodus verwendet, was der Verwendung von drei gleichen Vorzeichen in if entspricht. Schreiben wir den Code des Falls um
Code:
var n = '5'; Switch (n) {case '5': // Schreiben Sie den Originalfall 5 in Fall '5'alert (' Fallzweig '); Break; Standard: alert (' Standard -Zweig ');};};};Ergebnis:
Nachdem Sie es neu geschrieben haben, können Sie in den Case -Zweig gehen, genau wie wir drei gleiche Zeichen in if if verwenden
Code:
var n = '5'; if (n === 5) {alert ('True Zweig');} else {alert ('false ast');};Ergebnis:
Da die Konvergenz verwendet wird, entspricht Zeichenfolge 5 nicht der Zahl 5 und der falsche Zweig ist verschwunden.
Das obige Beispiel zeigt, dass ein Problem, auf das bei der Verwendung eines kongruenten Matching -Musters im Switch geachtet werden muss, insbesondere wenn Zahlen an Strings übereinstimmen.