我需要使用new Function()
构造函数创建一个具有可变数量参数的函数。类似这样的:新函数()带有可变参数
args = ['a', 'b'];
body = 'return(a + b);';
myFunc = new Function(args, body);
是否有可能没有eval()
?
非常感谢,伙计们!其实,a + b并不是我最关心的问题。我正在处理和扩展模板的代码,我需要将未知(和可变)数量的参数传递给函数,以便将它们作为局部变量引入。
例如,如果一个模板包含:
<span> =a </span>
我需要输出参数a
的价值。也就是说,如果用户宣布扩大功能
var expand = tplCompile('template', a, b, c)
,然后调用
expand(4, 2, 1)
我需要替换=a
与4
。是的,我很清楚功能类似于eval()
,运行速度非常慢,但我没有任何其他选择。
为什么不通过数组循环?无论你想要做什么,可能有更好的方法。 – 2010-11-15 10:53:44
我担心eval无法避免,因为您试图将纯文本评估为代码。 – 2010-11-15 11:02:36
有更好的方法来做到这一点。如果你绝对必须使用'new Function()',那听起来像是一项家庭作业。在这种情况下,教师正在教你如何做错事情。 – darioo 2010-11-15 11:13:51