总新手问题。 我如何让以下代码工作。
var f_str = "function test(msg) { alert(msg) }"
var f = eval(f_str)
f("hello")
我们的想法是将函数test作为字符串,并能够将其作为函数执行。 eval似乎不起作用,我也试过JSON.parse,没有运气..
答案 0 :(得分: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"); // <--
答案 1 :(得分: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');