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

  }

javascriptコードにelseチェーン(約60チェック)があると、このような長いチェーンがあります。この長いチェーンは、60番目のチェックが入力として来るように非効率的であり、59回のチェックを不必要に通過する必要があるため、このように実装することを考えました。

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

javascriptで実装できるこのソリューションよりも優れた方法は他にありますか?

注:入力は連番ではありません。そうでない場合は、オブジェクトの代わりに配列を使用できます。

4

1 に答える 1

7

私はあなたのアイデアを使用しますが、次のように少し異なる方法でコーディングされています。

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

    return function(i) {
        (implobj[i] || implobj.defaultImpl)();
    };
}());
于 2013-01-21T18:40:34.280 に答える