2013-04-05 7 views
14

Welche ist gut zu verwenden, wenn es eine große Anzahl von Verzweigungsfluss in Node.JS-Programm ist.Switch vs vs else Verzweigungssteuerung Struktur in Node.JS

Schalter

switch(n) 
{ 
case 1: 
    execute code block 1 
    break; 
case 2: 
    execute code block 2 
    break; 
default: 
    code to be executed if n is different from case 1 and 2 
} 

OR
if-else

if (condition1) 
    { 
    execute code block 1 
    } 
else if(condition2) 
    { 
    execute code block 2 
    } 
else 
    { 
    code to be executed if n is different from condition1 and condition2 
    } 
+2

"switch" scheint vorzuziehen, wenn die Bedingungen darin bestehen, für einen bestimmten Wert "n" zu prüfen. – robertklep

+0

@Karaxuna: Es ist wichtig, mit den Sprachen, d. H. C++ wiesest du auf "Es ist eine kompilierte Sprache" und ich fragte in "Node.JS - interpretierte Sprache". Also überlegen Sie bitte, Ihre enge Abstimmung rückgängig zu machen. –

+0

@karaxuna Wenn Sie die Frage gelesen haben, auf die Sie verwiesen haben. Antwort sagt 'Benutzen Schalter. Im schlimmsten Fall generiert der Compiler den gleichen Code wie eine if-else-Kette, dh der Compiler erzeugt den gleichen Code. Aber Node.JS wird als Sprache interpretiert –

Antwort

16

Für nur ein paar Dinge, ist der Unterschied gering. Wenn Sie viele Gegenstände haben, sollten Sie unbedingt einen Schalter benutzen. Es gibt eine bessere Leistung als wenn-sonst.

Wenn ein Switch mehr als fünf Elemente enthält, wird er mithilfe einer Nachschlagetabelle oder einer Hash-Liste implementiert. Das bedeutet, dass alle Elemente die gleiche Zugriffszeit im Vergleich zu einer Liste von if-else, wo der letzte Punkt braucht viel mehr Zeit, um zu erreichen, wie es zuerst all vorherigen Zustand zu bewerten hat ..

+0

Während die Anweisung 'switch' wahrscheinlich schneller ist (und die Bedeutung mehr offensichtlich) Ich denke, die Behauptung über die letzte Bedingung, die am langsamsten ist, ist falsch. Dies ist ein typischer Fall, in dem eine Verzweigungsvorhersage eintritt, so dass die gebräuchlichste Option am schnellsten wäre. –

6
switch(n) 
{ 
case 1,3,4: 
    execute code block 1 
    break; 
case 2,5,9,10: 
    execute code block 2 
    break; 
default: 
     code to be executed if n is different from first 2 cases. 
} 

aufschreiben Die if ... else wenn ... andere Schritte für den obigen Fall, müssen Sie die 'OR (||)' Bedingung-Anweisung schreiben und die Variable 'n' in der Anweisung wiederholen, wo wie Switch-Fälle sein können nur durch ein Komma getrennt. Daher ist der Schalter für einen solchen Fall besser lesbar.