4

有没有办法在运行时创建一个函数,其内容在设计时未知(但受信任),而不使用 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);}))()
4

1 回答 1

4

您可以使用new Function(bodytext).

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function

于 2013-06-05T10:52:27.700 回答