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

How to call anonymus function from string

本文关键字:函数 调用 字符串      更新时间:2023-09-26

我有一个包含匿名函数定义的字符串,但我如何调用它。假设函数是这样的:

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 +')();');

立即调用函数表达式

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

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

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

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);