JavaScriptのevalは「JavaScriptコードの文字列を評価」する関数です。
例えば「2+5」というような文字列を与えると、計算結果「7」を返します。
この応用で、関数を文字列で指定することができます。
var myfunction = function () {
var a = 2;
var b = 5;
return a + b;
}
alert(eval("myfunction()"));
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));
myfunction["tashi"] = function (a, b) {
return a + b;
}
myfunction["hiki"] = function (a, b) {
return a - b;
}
alert(myfunction["tashi"](2, 5));
関数を変数として捉えると、連想配列に代入することができます。この添え字に文字列を指定するのです。
この例では足し算ならば「tashi」、引き算ならば「hiki」を指定することで、処理を振り分けることができます。
コメント