如何在javascript中动态创建函数,但变量是“动态硬编码”(?)。最好不要使用 eval()。
我认为这是在nodejs中传递async.parallel()一些参数而不必绑定对象的最简洁方法。
function makeFunction( param1){
return function(){
alert(param1);
}
}
console.log的实际输出(makeFunction(“Hello World”));
return function(){
alert(param1);
}
console.log的所需输出(makeFunction(“Hello World”));
return function(){
alert("Hello World");
}
答案 0 :(得分:1)
function makeFunction(param1){
return new Function('alert(\'' + param1 + '\');')
}
console.log(makeFunction('helloWorld').toString())
只是这样。 new Function
有点“evaly”但事实上它更好(或更少邪恶)。
答案 1 :(得分:0)
我觉得它不比使用eval
更好,但可能这就是你想要的:
function makeFunction(param1) {
var F=function () {
alert(param1);
};
var text=['"', '"'].join(param1);
text=String.prototype.replace.call(F, 'param1', text);
text=['return ', ';'].join(text);
return (new Function(text))();
}