将字符串转换为函数

时间:2012-12-17 15:10:22

标签: javascript

总新手问题。 我如何让以下代码工作。

var f_str = "function test(msg) { alert(msg) }"
var f = eval(f_str)
f("hello")

我们的想法是将函数test作为字符串,并能够将其作为函数执行。 eval似乎不起作用,我也试过JSON.parse,没有运气..

2 个答案:

答案 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');