0

完全な初心者の質問。次のコードを機能させるにはどうすればよいですか。

var f_str = "function test(msg) { alert(msg) }"
var f = eval(f_str)
f("hello")

アイデアは、関数テストを文字列として持ち、それを関数として実行できるようにすることです。eval が機能していないようで、JSON.parse も試してみましたが、うまくいきませんでした..

4

2 に答える 2

4

f_str関数式として解釈されるように、を括弧で囲みます。

var f_str = "(function test(msg) { alert(msg) })";
var f = eval(f_str);
f("hello");

現在のコードでは、コードは関数宣言として解釈されます。これは、次の値を印刷 / 使用することで確認できますtest

var f_str = "function test(msg) { alert(msg) }";
var f = eval(f_str);//^^^^
test("hello");   // <--
于 2012-12-17T15:13:08.627 に答える
0

これは通常、悪い考えです。動的な JavaScript を実行する場合は、次のようなスニペットを使用できます。

  (function() {
    var code = document.createElement('script');
    code.type = 'text/javascript';
    code.async = true;
    code.src = '/path/to/script';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(code, s);
  }());

または使用jQuery.getScript()

$.getScript('/path/to/script');
于 2012-12-17T15:21:13.737 に答える