Javascript 包含可执行函数代码的字符串

Javascript 包含可执行函数代码的字符串,javascript,string,function,eval,Javascript,String,Function,Eval,我基本上想转换一个包含如下代码的字符串- var code = "function Solve(args) { // do stuff and return value};"; 进入一个可执行函数,您可以传递参数。 当我将它与eval(code+“Solve(args);”)一起使用时它没有给我错误,但结果不是预期的。我还尝试: var fu = eval(code); var result = fu(args); 傅没有定义。 是我做错了什么,还是有更好的方法 试试看: eval(code

我基本上想转换一个包含如下代码的字符串-

var code = "function Solve(args) { // do stuff and return value};";
进入一个可执行函数,您可以传递参数。 当我将它与
eval(code+“Solve(args);”)一起使用时它没有给我错误,但结果不是预期的。我还尝试:

var fu = eval(code);
var result = fu(args);
傅没有定义。 是我做错了什么,还是有更好的方法

试试看:

eval(code + "fu = Solve(args);");

console.log(fu);
这项工作涉及:


您期望的功能和结果是什么?

使用eval通常是一种非常糟糕的做法

eval将把代码放入全局名称空间

var code = "function Solve(args) { return args * 2}";  
eval(code); 
var val = 1;
var result = Solve(val);
如果你不知道这个名字,你就得这样做

var code = "function Solve2(args) { return args * 2}";
var val = 3;  
var result = eval("(" + code + ")(" + val + ");"); 
上述方法的问题是它将使用toString()

从字符串生成函数的更好方法是使用


所有其他答案都是使用eval提出的,所以这里有一个稍微不同的方法

试试这个,告诉我你喜欢什么:

var code = "alert('I am an alert')";
var codeToFunction = new Function(code);
codeToFunction();

你所说的“结果不如预期”是什么意思?你预期会发生什么?发生了什么事?为什么不正确?参数传递正确,但函数的结果是错误的。那么,发布函数的实际主体而不是
//do stuff and return value
可能会有所帮助?谢谢。我发现了我的错误。我认为这种方法是最好的,因为如果你想用不同的参数重用函数,你可以这样做。
var sumCode = "return a + b";
var sum = new Function("a","b", sumCode);
sum(1,2); 
var code = "alert('I am an alert')";
var codeToFunction = new Function(code);
codeToFunction();