在switch语句中适合多少个案例

时间:2014-02-28 10:08:58

标签: javascript switch-statement case

我计划通过switch语句对JS代码进行分组。我想这将超过50个案例。

这种情况太多了吗?如果我的担心是正确的,那么switch语句应该处理多少个案例?

//修改

就fancybox而言,我想通过在函数中使用switch语句对它们进行分组,如下所示:

function openFancybox(object){
    switch(object)
    {
        case '.edit':
            width = 900;
            height = 400;
        break;

        case '.friend':
            width = 700;
            height = 300;
        break;

        case '.follow':
            width = 'auto';
            height = 'auto';
        break;

        case '.global':
            width = 'auto';
            height = 'auto';
        break;

    }
    $(object).fancybox({
        'titlePosition'     : 'inside',
        'transitionIn'      : 'none',
        'transitionOut'     : 'none',
        'centerOnScroll'    : true,
        hideOnOverlayClick:false,
        hideOnContentClick:false,
        'autoDimensions': false,
        'centerOnScroll'    : true,
        'width': width,
        'height': height,
    });
}

1 个答案:

答案 0 :(得分:3)

在这种特殊情况下,我选择了map(JS Object)解决方案,其中键是classNames,值是[width,height]结构的数组。例如:

var fancyBoxSettings = {
  edit: [900, 400],
  friend: [700, 300],
  some: [42, 42],
  more: [420, 420]
};

...尽量减少重复代码(所有这些width =, height =break等)。然后我会使用辅助函数管理这些值的检索:

function getFancyBoxDimensions(className) {
  var dimensions = fancyBoxSettings[className] || ['auto', 'auto'];
  return { width: dimensions[0], height: dimensions[1] };
}

所以它可以像这样使用:

var fbxSettings = {
  titlePosition     : 'inside',
  transitionIn      : 'none',
  transitionOut     : 'none'
  // ...
};
$.extend(fbxSettings, getFancyBoxDimensions(className)); 
$('.' + className).fancybox(fbxSettings);