2016-11-28 33 views
0

我有一個開關的情況,只有少數兩種情況,它們在代碼中的差異很小。如何聲明全局以最小化代碼。如何在switch語句中進行代碼優化

這是我的代碼。

switch(clickedDataIndex){ 
      case A : 
       var data = record.get(data1); 
       var Object = { 
         'AID':AID, 
         'BID':record.get(BID), 
         'CID':record.get(CID), 
         'DId' : record.get(D1), 
       } 
       if(data){ 
        myFunction(Object); 
       } 
       break 
      case B: 
       var data = record.get(data2); 
       var Object = { 
         'AID':AID, 
         'BID':record.get(BID), 
         'CID':record.get(CID), 
         'DId' : record.get(D12), 
       } 
       if(data){ 
        myFunction(Object); 
       } 
       break; 
     } 

如果您在創建對象時注意到許多屬性是相同的。有什麼辦法可以避免嗎?

+0

從這些重複的部分提取功能,並調用它。 –

+0

你能否給出一個建議,你的建議是什麼 – David

+0

當然,你的案例應該是這樣的:case A:myOtherFunction(data1,'D1'); break;' –

回答

2

您可以創建一個函數來減少代碼重複,

function doProcess(data, aId, bId, cId, dId){ 
    var data = record.get(data); 
    var Object = { 
     'AID': aId, 
     'BID':record.get(bId), 
     'CID':record.get(cId), 
     'DId' : record.get(dId), 
    } 
    if(data) myFunction(Object); 
} 

switch(clickedDataIndex) { 
case 'A': 
    doProcess(data1, AID, BID, CID, d1); 
break; 
case 'B': 
    doProcess(data2, AID, BID, CID, D12); 
break; 
} 
+1

感謝它的工作。我用了其他方式,但這也起作用。 – David

0

調用單獨的函數doAction()

<script type="text/javascript"> 
function doAction(Data, DId) 
{ 
    var data = record.get(Data);   
    if (data) 
    { 
     var Object = { 
       'AID':AID, 
       'BID':record.get(BID), 
       'CID':record.get(CID), 
       'DId' : record.get(DId), 
     } 

     myFunction(Object); 
    } 
} 

switch(clickedDataIndex) 
{ 
    case A : 
     doAction(data1, D1); 
     break; 
    case B: 
     doAction(data2, D12);  
     break; 
} 
</script>