まずはJSの機能を見てみましょう
JavaScript eval() 関数
定義と使用法
eval() 関数は文字列を評価し、その中の JavaScript コードを実行します。
文法
eval(文字列)
パラメータの説明
文字列が必要です。評価する JavaScript 式または実行するステートメントを含む、評価する文字列。
戻り値
文字列 (存在する場合) を評価して取得された値。
説明する
このメソッドは、生の文字列をパラメータとしてのみ受け入れます。文字列パラメータが生の文字列でない場合、メソッドは変更されずに戻ります。したがって、String オブジェクトをパラメーターとして eval() 関数に渡さないでください。
ECMAScript の実装では、eval プロパティをオーバーライドしようとしたり、eval() メソッドを別のプロパティに割り当ててそのプロパティを通じて呼び出そうとした場合に、EvalError 例外がスローされることが許可されています。
投げる
パラメータに正当な式やステートメントがない場合、SyntaxError 例外がスローされます。
eval() が不正に呼び出された場合、EvalError 例外がスローされます。
eval() に渡された Javascript コードが例外を生成した場合、eval() は呼び出し元に例外を渡します。
ヒントとメモ
ヒント: eval() は非常に強力ですが、実際の使用ではほとんど使用されません。
例
例1
この例では、いくつかの文字列に eval() を適用し、どのような結果が返されるかを確認します。
次のようにコードをコピーします。
<script type="text/javascript">
eval("x=10;y=20;document.write(x*y)")
document.write(eval("2+2"))
varx=10
document.write(eval(x+17))
</script>
出力:
200
4
27
例 2
他の場合に eval() が何を返すかを見てみましょう。
次のようにコードをコピーします。
eval("2+3") // 5を返します
var myeval = eval // EvalError 例外がスローされる可能性があります。
myeval("2+3"); // EvalError 例外がスローされる可能性があります
次のコードを使用して、eval() のパラメータが有効かどうかを確認できます。
次のようにコードをコピーします。
試す {
alert("結果:" + eval(prompt("式を入力してください:","")));
}
キャッチ(例外) {
アラート(例外);
}
最初の方法は、js で eval を使用することです
以下は私が書いた例です
次のようにコードをコピーします。
call("showmsg");
関数呼び出し(関数名){
eval("this."+関数名+"()");
}
関数 showmsg(){
アラート("成功");
}
evalは接続した文字列をメソッドとして自動的に認識して呼び出すことができます。
しかし、欠点も大きく、呼び出し先のメソッド名を変更することで、誰かがメソッドを呼び出すことができると想像してください。
2 番目のメソッドは主に独自定義のメソッドとして使用されます。
主な理由は、2 番目の方法では特定の書き方が必要になるためです。
次のようにコードをコピーします。
関数呼び出し(関数名) {
showmsgs["showmsg"]();
}
var showmsgs = { showmsg: function () {
アラート("成功");
}
}
call("showmsg");