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 回答