在javascript函数中动态创建静态变量

时间:2014-02-23 15:36:02

标签: javascript node.js

如何在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"); }

2 个答案:

答案 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))();
}