2013-04-05 33 views
14

Node.JS程序中存在大量分支流時,哪一種方法很好用。Node.JS中的switch vs if-else分支控制結構

開關

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

如果條件包括檢查特定值的'n','switch'似乎更可取。 – robertklep 2013-04-05 10:54:26

+0

@karaxuna:它與語言有關,即指向「它是一種編譯語言」的C++,並且我在「Node.JS - 解釋型語言」中詢問。所以請考慮撤銷您的近距離投票。 – 2013-04-05 11:41:22

+0

@karaxuna如果您閱讀了您指出的問題。回答說'使用開關。在最糟糕的情況下,編譯器將生成與if-else鏈相同的代碼,即編譯器將生成相同的代碼。但Node.JS是解釋型語言 – 2013-04-05 11:42:49

回答

16

對於只有幾個項目,差別很小。如果你有很多項目,你一定要使用開關。它比if-else提供更好的性能。

如果交換機包含超過五個項目,它使用查找表或哈希列表實現。這意味着,所有項目獲得相同的訪問時間,比如果其他地方的最後一個項目需要更多的時間才能達到,因爲它必須評估每一個以前的狀態第一的名單..

+0

雖然switch語句可能更快(並且含義更多顯而易見)我認爲最後一個條件最慢的說法是錯誤的。這是一個典型的案例,分支預測會啓動,以便最常用的選項最快。 – 2014-01-24 09:22:02

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

寫下來對於上述情況,如果if ... else if ... else步驟,則必須寫入'OR(||)'條件語句並在語句中重複變量'n',其中,作爲開關的情況可以是用逗號隔開「,」。因此,對於這種情況,開關更具可讀性。