我正在研究一个简单的调试函数,它评估一个闭包并获取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”是一个很大的问题,但我只是在开发环境中使用它。
答案 0 :(得分:0)
是的。只需返回一个函数来关闭c
并将另一个var设置为该闭包。像这样。
function a(c){
var b = true;
return function () {
console.log(c);
};
}
var d = a(false); // undefined
d(); // false