node.js捕获闭包变量

时间:2015-10-28 17:17:23

标签: javascript node.js variables closures

我正在研究一个简单的调试函数,它评估一个闭包并获取node.js中的所有相关变量名。它应该在运行时工作。那么,有没有办法自动捕获闭包中的所有变量名? 例如,在下列情况下是否可以知道“b”,“c”和“d”变量的存在?

var d=3;
function a(c){ 
   var b = true;
   eval( debug(/* need to access in runtime something like ["b","c","d"] */) );

}
function debug(vars){ 
   var txt = "";
   for(var i=0; i<vars.length; loop++){
      txt+="console.log('"+vars[i]+":' + " vars[i] + ");"
   }
   return txt
}

我可以使用强力扫描a.toString()搜索所有“var”和所有参数参数,但是有一个本机函数可以找到它或一个特殊变量(类似被调用者。 vars )在闭包中找到变量名?

我知道“eval”是一个很大的问题,但我只是在开发环境中使用它。

1 个答案:

答案 0 :(得分:0)

是的。只需返回一个函数来关闭c并将另一个var设置为该闭包。像这样。

function a(c){ 
   var b = true;
   return function () {
       console.log(c);
    };
}

var d = a(false); // undefined
d(); // false