当たり前の話なんだけども・・・
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
雑感
以前、新人さんがこれを見て「こんな事できるんですかぁ!」と驚いていて、「ああ、そっか」と思った訳です。
配列やオブジェクトに突っ込んでおくのは、プログラム上当たり前の動作なんですが・・・。変数に代入せずに、そのまま値を参照したり、処理を行ったりするのは意外なんだなと。
再利用を考えると、あまり褒めたもんでもないのですが、それ以外に使わない簡易なものなら、場合によっては制御文より見通しが良かったりします。
この記事へのコメント