我正在研究一個簡單的調試函數,該函數計算閉包並獲取node.js中的所有相關變量名稱。它應該在運行時工作。那麼,有沒有辦法在閉包中自動捕獲所有的變量名? 例如,在下列情況下是否可以知道「b」,「c」和「d」變量的存在?node.js捕獲閉包變量
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」是一個很大的不,但我只是在開發環境中使用它。
在運行時?不可以。您可以進行靜態分析並測試您的代碼,但那也只能幫助您。 –
可能重複:http://stackoverflow.com/questions/2336508/javascript-get-access-to-local-variable-or-variable-in-closure-by-its-name –
你試過調試器嗎? – Xufox