ホームページ  >  記事  >  ウェブフロントエンド  >  switch文の代わりにコマンドオブジェクトを使った記述例_javascriptスキル

switch文の代わりにコマンドオブジェクトを使った記述例_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 16:12:101412ブラウズ

かつて誰かが、本当に優れたプログラムには if..else がないと言いました。 もちろん、switch は if..else ほど優れたものではありません。 JSの仕様ではスイッチの使用は禁止されています。

コマンド オブジェクトはこの問題を完全に解決します。

海外ブログからの引用:

JavaScript には優れた制御フロー ステートメントがあり、多くの場合中括弧で囲まれています。例外が 1 つあります。switch … case ステートメントです。 switch ... case の奇妙な点は、フロー制御が次の case ステートメントに渡されないように、各 case の最後に Break キーワードを追加する必要があることです。トラバーサルとは、複数のケースを実行する方法を指し、期待されたブレークに遭遇しない場合、制御は自動的に次のケースに渡されます。ただし、セミコロンや中括弧と同様に、ブレークの記述をうっかり忘れてしまう可能性があります。その場合、ステートメント自体は正しいため、後のトラブルシューティングがより困難になります。したがって、ケース ... ブレークをペアで書くことをお勧めします。
私たちは通常、JavaScript にはエレガントなオブジェクト リテラルとトップレベルの関数があり、特定のメソッドのクエリを非常に簡単にしていると言います。メソッド クエリ用に作成されたオブジェクトはアクション オブジェクトまたはコマンド オブジェクトと呼ばれ、強力で便利なコマンド パターンを含む多くのソフトウェア デザイン パターンで使用されます。

例:

コードをコピーします コードは次のとおりです:

// メソッドの切り替え
関数 testSwitch(名前) {
スイッチ (名前) {
ケース '1':
return 'hack';
休憩;
ケース '2':
return 'スラッシュ';
休憩;
ケース '3':
return 'run';
休憩;
デフォルト:
return false;
休憩;
}
}
//コマンドオブジェクトを使用します
関数 testFn(名前) {
変数名 = {
'1': function() {
return 'hack';
},
'2': function() {
return 'スラッシュ';
},
'3': function() {
return 'run';
}
};
If (名前の種類[名前] !== '関数') {
return false;
}
名前を返す[名前]();
}
// テスト結果
var result1 = testSwitch('1');
var result2 = testFn('2');
console.info(result1, result2);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。