完全な初心者の質問。次のコードを機能させるにはどうすればよいですか。
var f_str = "function test(msg) { alert(msg) }"
var f = eval(f_str)
f("hello")
アイデアは、関数テストを文字列として持ち、それを関数として実行できるようにすることです。eval が機能していないようで、JSON.parse も試してみましたが、うまくいきませんでした..
完全な初心者の質問。次のコードを機能させるにはどうすればよいですか。
var f_str = "function test(msg) { alert(msg) }"
var f = eval(f_str)
f("hello")
アイデアは、関数テストを文字列として持ち、それを関数として実行できるようにすることです。eval が機能していないようで、JSON.parse も試してみましたが、うまくいきませんでした..
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"); // <--
これは通常、悪い考えです。動的な 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');