0
总新手问题。 我如何得到下面的代码工作。将字符串转换为函数
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');
我不知道你的实际需要,但如果你使用eval,你可能做错了。 – Grinn