2007年02月26日

Javascript:if などの制御構文を使わない分岐

if などの制御構文を使わなくても分岐ができます。実際、当たり前の話なんですが、意図的に行うかどうかという、ただそれだけの違いです。

 当たり前の話なんだけども・・・

  if(n = 0) alert('apple');
  if(n = 1) alert('peach');
  if(n = 2) alert('grape');


上記コードはオブジェクトや配列を使っても同じ結果を期待できます。
  alert(['apple', 'peach', 'grape'][n]);

関数を突っ込めば。
  function fn0(){alert('apple');}
  function fn1(){alert('peach');}
  function fn2(){alert('grape');}
  [fn0, fn1, fn2][1]();
// peach

ただ、こうすると当然、全部起動します。
  [fn0(), fn1(), fn2()][1];// apple, peach, grape

配列だと数値を評価するだけなので、オブジェクトを使えば文字列の一致を評価できます。ただ、どういう意識で使うか?ということだけで、結局メソッドを起動しているに過ぎないんですがw

 雑感


以前、新人さんがこれを見て「こんな事できるんですかぁ!」と驚いていて、「ああ、そっか」と思った訳です。
配列やオブジェクトに突っ込んでおくのは、プログラム上当たり前の動作なんですが・・・。変数に代入せずに、そのまま値を参照したり、処理を行ったりするのは意外なんだなと。

再利用を考えると、あまり褒めたもんでもないのですが、それ以外に使わない簡易なものなら、場合によっては制御文より見通しが良かったりします。
posted by HiFa at 13:06 | 🌁 | Comment(0) | TrackBack(0) | JavaScript雑感 | このブログの読者になる | 更新情報をチェックする
>>> スパムコメントは消してますよん。 お互い無駄な労力は避けましょう。 <<<

この記事へのコメント

コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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

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