node.js捕获闭包变量

node.js capture closure variables

本文关键字:闭包 变量 js node      更新时间:2023-09-26

我正在开发一个简单的调试函数,该函数评估闭包并获取node.js中所有相关变量的名称。它应该在运行时工作。那么,有没有一种方法可以自动捕获闭包中的所有变量名?例如,在以下情况下,是否有可能知道"b"、"c"answers"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"和所有的参数,但有没有本地函数可以找到它,或者有一个特殊的变量(类似于callee.vars)可以在闭包中找到变量名?

我知道"eval"是一个很大的否定,但我只是在开发环境中使用它。

是的。只需返回一个函数在c上关闭,并为该关闭设置另一个var。就像这样。

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