替代javascript中的long ifel / switch链

时间:2013-01-21 18:24:55

标签: javascript

 var ifChecks = function( i )
 {
     if( i === 23 )
     {
       // implementation
     }
     else if ( i === 300 )
     {
       // implementation
     }
     else if ... 

  }

我在javascript代码中有这种long if if chain(应用程序60检查),这个冗长的链条效率低,好像第60次检查作为输入,然后它必须不必要地经过59次检查,所以我想实现像这样。

 var implobj = { 23 : handleimpl1,
                 300 : handleimpl2,
                 .
                 .
                 .
               }
 var handleImpl = function( i )
 {
    implobj[i]();
 }

有没有比这个可以在javascript中实现的解决方案更好的方法?

注意:输入不是序号,否则我可能使用数组而不是对象。

1 个答案:

答案 0 :(得分:7)

我会用你的想法,编码方式略有不同:

var handleImpl = (function() {
    var implobj = {
        23 : handleimpl1,
        300 : handleimpl2,
        // ...
        defaultImpl: someDefaultFn
    }

    return function(i) {
        (implobj[i] || implobj.defaultImpl)();
    };
}());