如何调用定义为字符串的函数?

时间:2015-12-29 16:03:46

标签: javascript function eval

我想在数据库记录中定义函数和脚本,然后使用Javascript将数据库字段从字符串转换为代码。

我以为我可以使用'eval',但这似乎不起作用。

举个例子:

    var strTest = "function(strParams) { alert('hello: ' + strParams); };"
       ,fn = eval(strTest);
    fn("World");

这不起作用,eval返回undefined,希望这给出了我想要实现的目标。

2 个答案:

答案 0 :(得分:3)

问题是eval将您的函数解析为函数声明。但是函数声明需要一个名字。

相反,你应该把它变成一个函数表达式,它不需要一个。

var strTest = "(function(strParams) { alert('hello: ' + strParams); })";
eval(strTest)("World");

只有在信任字符串时才这样做。

或者,您可能对Function构造函数感兴趣:

var f = Function("strParams", "alert('hello: ' + strParams)");
f("World");

答案 1 :(得分:0)

您可以尝试这样的事情:

<script src="http://my-server/js-func/foobar.js"></script>

让服务器提供从该端点的DB检索到的JS。