我有一个包含匿名函数定义的字符串,但是我该如何调用它呢?比如说函数如下:
var fn_str = "function(){ alert('called'); }";
尝试使用eval,但出现了一个错误,提示函数必须有一个名称。
eval(fn_str).apply(this); // SyntaxError: function statement requires a name
我有一个包含匿名函数定义的字符串,但是我该如何调用它呢?比如说函数如下:
var fn_str = "function(){ alert('called'); }";
eval(fn_str).apply(this); // SyntaxError: function statement requires a name
您可以使用 立即调用函数表达式:
var fn_str = "function(){ alert('called'); }";
eval('(' + fn_str +')();');
另一种方法是使用 Function
对象(如果您有函数体字符串):
var func = new Function("alert('called')");
func.apply(this);
var fn = new Function("arg1", "alert('called ' + arg1);");
fn.apply(this)
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
var a = "(function(){ alert('called'); })";
eval(a).apply(this);
apply
,你可以像我回答的那样使用“立即调用函数表达式”。 - gdoronvar fn = "function(object, cb) { /* 对对象进行操作 */ }";
var obj = { param: value, param2: value2 };
eval('('+fn')').apply(this, [obj]);
- Kristianfunction(object, cb){
部分。 - gdoronfunction(){
和 }
,但是我已经解决了我的问题。无论如何,谢谢。 - Kristian
fn_str
中时,您使用eval
调用a
是行不通的。 - gdoron