2013-04-05 17 views
14

Która z nich jest dobra do użycia, gdy istnieje duża liczba rozgałęzień w programie Node.JS.przełącznik vs struktura rozgałęziania if-else w węźle.JS

przełącznik

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 
} 

LUB
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

"Przełącznik" wydaje się preferowany, jeśli warunki składają się z sprawdzenia "n" dla określonej wartości. – robertklep

+0

@karaxuna: To ma znaczenie dla języków, np. C++ wskazałeś na "Jest to język skompilowany" i zapytałem w 'Node.JS - język interpretowany'. Więc rozważ cofnięcie swojego bliskiego głosowania .. –

+0

@karaxuna Jeśli przeczytałeś pytanie, które wskazałeś. Odpowiedź brzmi: "Użyj przełącznika. W najgorszym przypadku kompilator wygeneruje ten sam kod co łańcuch if-else, tzn. Kompilator wygeneruje ten sam kod. Ale Node.JS jest interpretowanym językiem –

Odpowiedz

16

za kilka przedmiotów, różnica jest niewielka. Jeśli masz wiele przedmiotów, zdecydowanie powinieneś użyć przełącznika. Daje lepszą wydajność niż gdyby-else.

Jeśli przełącznik zawiera więcej niż pięć elementów, jest zaimplementowany przy użyciu tabeli odnośników lub listy mieszającej. Oznacza to, że wszystkie elementy uzyskać ten sam czas dostępu, w porównaniu do listy if-else, gdzie ostatni element zajmuje dużo więcej czasu, aby osiągnąć jak to musi ocenić każdy poprzedni pierwszy warunek ..

+0

Podczas gdy instrukcja 'switch' prawdopodobnie jest szybsza (i znaczenie więcej oczywiste) Myślę, że twierdzenie o ostatnim warunku, który jest najwolniejszy, jest błędne. Jest to typowy przypadek, w którym predykcja rozgałęzień zostałaby uruchomiona, aby najpowszechniejsza opcja była najszybsza. –

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. 
} 

spisać jeśli ... else, jeśli ... else kroki dla powyższej sprawy, będziesz musiał napisać instrukcję warunkową "OR (||)" i powtórzyć zmienną "n" w instrukcji, gdzie jak można zmienić przypadki przełączania oddzielone przecinkiem ",". W związku z tym przełącznik jest bardziej czytelny w takim przypadku.