如何从字符串中调用匿名函数

时间:2012-03-09 08:26:19

标签: javascript anonymous-function

我有字符串包含匿名函数定义,但我怎么称呼它。让我们说功能是这样的:

var fn_str = "function(){ alert('called'); }";

尝试了eval,但得到了一个错误,函数必须有一个名字。

eval(fn_str).apply(this); // SyntaxError: function statement requires a name

3 个答案:

答案 0 :(得分:5)

您可以使用立即调用的函数表达式

var fn_str = "function(){ alert('called'); }";
eval('(' + fn_str +')();');

Immediately Invoked Function Expression

另一种方法是使用Function对象(如果你有函数体字符串):

var func = new Function("alert('called')");
func.apply(this);

答案 1 :(得分:3)

您可以使用Function构造函数从字符串创建函数:

var fn = new Function("arg1", "alert('called ' + arg1);");
fn.apply(this)

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function

答案 2 :(得分:1)

找到解决方案:将函数放在括号中

var a = "(function(){ alert('called'); })";
eval(a).apply(this);