使用eval的功能不会使其缩小

NLe*_*may 0 javascript eval minify google-closure-compiler

这是我的奇怪功能,让我的用户创建自己的JavaScript代码

function evalThisFunction(functionBody){        
     var func;
     eval("func = " + functionBody);
     return func;
}
Run Code Online (Sandbox Code Playgroud)

但在使用Closure Compiler(http://closure-compiler.appspot.com/)进行缩小后,我得到了这样的结果:

function a(b){eval("func = "+b);}
Run Code Online (Sandbox Code Playgroud)

你有没有看到我可以修改我奇怪的功能的方法,所以它在缩小后仍然可以工作?

Ben*_*aum 5

是的,使用Function构造函数:

function evalThisFunction(functionBody){        
     return Function(functionBody);
}
Run Code Online (Sandbox Code Playgroud)

或者,你可以完全换掉上面的代码Function,它似乎也可以做你想要的.eval有范围问题.

  • 而`var m = functionExpression.match(/ function [^ \(]*\(([^ \]]*)\)\ s*{([^ \}]*)} /); 返回新函数(m [1],m [2]);`以使参数正确 (2认同)