條件語句對比

簡介

常見的條件語句有if-else,switch-case,查詢表css

各類條件語句比對

if-else

最壞的狀況下(value=10)咱們可能要作10次判斷才能返回正確的結果html

if (value == 0){ 
    return result0; 
} else if (value == 1){
    return result1; 
} else if (value == 2){ 
     return result2; 
} else if (value == 3){
     return result3; 
} else if (value == 4){
    return result4; 
} else if (value == 5){ 
   return result5; 
} else if (value == 6){ 
   return result6;
} else if (value == 7){
   return result7; 
} else if (value == 8){
   return result8; 
} else if (value == 9){
   return result9; 
} else {
    return result10;
}

switch-case

  1. 讓代碼顯得可讀性更強
  2. 若是多個value值返回同一個結果,就不用重寫return那部分的代碼。
  3. 當case數達到必定數量時,swtich-case語句的效率是比if-else高的,由於switch-case採用了branch table(分支表)索引來進行優化,固然各瀏覽器的優化程度也不同。
switch (value) {
case 0:
    return result0;
case 1:
    return result1;
case 2:
    return result2;
case 3:
    return result3;
case 4:
    return result4;
case 5:
    return result5;
case 6:
    return result6;
case 7:
    return result7;
case 8:
    return result8;
case 9:
    return result9;
default:
    return result10;
}

查找表

優勢:當數據量很大的時候,查找表的效率一般要比if-else語句和swtich-case語句高.
侷限性:固然查找表的使用是有侷限性的,每一個case對應的結果只能是一個取值而不能是一系列的操做。
注意點:查找表能用數字和字符串做爲索引,而若是是字符串的狀況下,最好用對象來代替數組。nginx

var results = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10];
return results[value];

小結

  1. 當只有兩個case或者case的value取值是一段連續的數字的時候,咱們能夠選擇if-else語句
  2. 當有3~10個case數而且case的value取值非線性的時候,咱們能夠選擇switch-case語句
  3. 當case數達到10個以上而且每次的結果只是一個取值而不是額外的JavaScript語句的時候,咱們能夠選擇查找表

參考資料

  1. 高性能JavaScript 循環語句和流程控制 http://www.imooc.com/article/3657
相關文章
相關標籤/搜索