我有字符串包含匿名函数定义,但我怎么称呼它。让我们说功能是这样的:
var fn_str = "function(){ alert('called'); }";
尝试了eval,但得到了一个错误,函数必须有一个名字。
eval(fn_str).apply(this); // SyntaxError: function statement requires a name
答案 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);