总新手问题。我如何让以下代码工作。
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');