evalを使わずに関数を文字列で指定して実行する方法

Pocket

JavaScriptのevalは「JavaScriptコードの文字列を評価」する関数です。
例えば「2+5」というような文字列を与えると、計算結果「7」を返します。
この応用で、関数を文字列で指定することができます。

var myfunction = function () {
  var a = 2;
  var b = 5;
  return a + b;
}
alert(eval("myfunction()"));

「myfunction()」という文字列を関数として評価して、その関数を実行します。
この場合「alert(myfunction());」としたときと同様に「7」を表示します。
しかしevalは便利すぎて、セキュリティ上、危険なため、使うことが推奨されていません。「evalはevil」と言われるほどです。
そこでevalを使わずに関数を文字列で指定する方法を考えます。

var myfunction = [];
myfunction["tashi"] = function (a, b) {
  return a + b;
}
myfunction["hiki"] = function (a, b) {
  return a - b;
}
alert(myfunction["tashi"](2, 5));

関数を変数として捉えると、連想配列に代入することができます。この添え字に文字列を指定するのです。
この例では足し算ならば「tashi」、引き算ならば「hiki」を指定することで、処理を振り分けることができます。

[ 2014年5月16日 | カテゴリー: JavaScript | タグ: ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報