當有大量離散值需要測試時,使用if和switch都比使用查表法要慢得多。在JavaScript中查表法可通過數組或普通對像實現,查表法訪問數據比if和switch更快,特別是當條件體的數目很大時。與if和switch相比,查表法不僅非常快,而且當需要測試的離散值數量非常大時,也有助於保持代碼的可讀性。
例如,在下面代碼中,使用switch檢測value值。
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;
}
使用switch結構檢測value值的代碼所佔的空間可能與switch的重要性不成比例,代碼很笨重。整個結構可以用一個數組查詢替代:
var results=[result0,result1,result2,result3,result4,result5,result6,result7,result8,result9,result10]
return results[value];
當使用查表法時,必須完全消除所有條件判斷。操作轉換成一個數組項查詢或一個對像成員查詢。使用查表法的一個主要優點:由於沒有條件判斷,當候選值數量增加時,基本上不會增加額外的性能開銷。查表法常用於一個鍵和一個值形成邏輯映射的領域,而switch更適合於每個鍵需要一個獨特的動作或一系列動作的場合。