2013年12月10日

JavaScriptのswitch文で工夫(caseで任意の式を使用する)

開発部だより 第221回


eラーニングコンテンツは一般のwebページに比べれば、いろいろな機能が搭載されています。ページを移動せずに表示を切り替えたり、ビデオや音声を再生したり、クイズに答えて判定して○×を表示したりといった機能です。

機能が増えればプログラムも増えて、更にタッチデバイス対応ならそれに対応するプログラムが増えてと、気が付いたら結構な量のスクリプトになってしまいます。
JavaScriptだったらオブジェクトにして更に機能ごとファイルを分けたり工夫しますが、記述が増えるほど後から見たときの理解が難しいですしデバッグも大変になります。

ではどうすれば良いか、これはプログラムをする人の多くを悩ませている問題だと思いますが、究極的にはシンプルに、しかも理に適ったプログラムをするしかないのでしょう。
そのためには仕様設計やらドキュメントも大切ですが、ブログラム記述にも工夫をしたいところです。

今回は、JavaScriptのswitch文での工夫をご紹介します。
JavaScriptを勉強する本を見ると、switch文のcaseラベルは通常リテラルで書かれています。
例)case 0: alert('0です');

ですが、ここは任意の式を記述することができます。リテラルでなくても判定できる内容が返れば良いわけです。

var num = 1;

switch (num) {
case (function() {return num})(): // @即時関数
  alert("@");
  //break;
case num > 0? true: "": // A三項演算子
  alert("A");
  //break;
case num > 0: // 条件
  alert("B");
  //break;
}

@即時関数
 即時関数ならば何らかの処理をした結果をreturnで判定できます。普通に関数呼び出しを書いても変数への代入のようにはいきませんが、この方法なら大丈夫。
A三項演算子
 関数を使用するほどでない条件分岐ならこの方法で。
B条件
 ただの条件分岐で良いならこの方法で。

これらをうまく使用すれば複雑な条件分岐もシンプルに記述できます。
ちなみに三項演算子では、JavaScriptではあまり登場しない「:」が2回も出てきて面白い状態になります。
posted by 開発部OliveDrab at 14:43
開発部だより | コメント(0) | トラックバック(0)
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。