有没有办法在运行时使用未知(但可信)的内容在设计时创建函数而不使用eval()?
基本上我试图创建一个“硬编码”功能,因为它会被称为很多次。 在许多调用开始之前,只有“硬编码”才会在运行时完成一次。
(未经测试的例子)
var strFuncString = 'function(){';
for (some loop)
{
strFuncString+='DoSomething()'; //if this can be made to reference an object obtained for the for-loop then even better - i.e. Myfunc+=Obj.DoSomething
}
var MyFunc = eval(strFuncString '}');
SomeProcessThatCallsItsArgALot(MyFunc);
我在调试器中尝试了这个但不出所料它没有用
((function(){console.log(1);} )+( function(){console.log(2);}))()
答案 0 :(得分:3)
您可以使用new Function(bodytext)
。
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function