0
私は以下のコードを使用しています。スイッチコードを最適化してargs関数を呼び出す
_handleIn: function(Filecontent, config) {
var oExtendedHTML = Filecontent;
switch (config.action) {
case 'new':
oExtended = this._crElement(Filecontent, config);
break;
case 'upd':
oExtended = this._updlement(oExtended, config);
break;
}
return oExtended;
},
私はJSに新しいと私はより多くの私は、スイッチが時々この擬似COEに変更することができることを読んで勉強したいので:私の質問はどのように私はできている
この
function actions(key, args){
switch(key){
case: 'foo':
return doFoo(args);
break;
case: 'bar':
return doBar(args);
break;
case: 'baz':
return doBaz(args);
break
}
}
var value = actions(keyargs);
// To This
var actions = {
foo: function doFoo(){...},
bar: function doBar(){...},
baz: function doBaz(){...}
};
var value = actions[key](args);.
私のコードをこれに変更しますか?どのように鍵とargsを渡すかわからない、私はrequirejs AMDモジュールを使用しています。
あなたが示す2つの例は、直接比較できない、と私の意見では、 'actions'オブジェクトと例のように動作するようにコードを変更しようとすることは意味がありません。時には 'switch 'が最良の選択です。あなたのケースでは、最初のケースを 'return this._createElement(Filecontent、config);だけにすることでスイッチを単純化することができ、2番目のケースはその値を返します。そして、 'break'文や' oExtended'変数は必要ありません。 – nnnnnn
@nnnnnn - ありがとうございますが、変更する方法がわからない場合は、answer.thankであなたの例を提供してください! –
キャッシュされたオブジェクトリテラル(ルックアップテーブル)メソッドはChromeで非常に高速ですが、スイッチケースはFirefoxで高速です。ここをクリックしてくださいhttps://jsperf.com/switch-vs-object-literal-vs-module/28 – Redu