如何在switch语句中进行代码优化

时间:2016-11-28 07:46:16

标签: javascript optimization switch-statement

我有一个只有两个案例的开关案例,它们的代码差别很小。如何全局声明以最小化代码。

这是我的代码。

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

如果您在对象创建期间发现许多属性相同。有什么方法可以避免这种情况。

2 个答案:

答案 0 :(得分: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 :(得分: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>