4
var code = 'var n = a; x = y; status.show();\n// todo: \nconsole.log(xyz, "todo: // tests.", params);';
function parse (c) {
    var myFunc = new Function("myFunc", c); 
}

我正在使用 V8 NODEJS 环境。那么也许可以获得有关已声明变量及其现有函数范围的信息?

事实上,我需要缺少的变量名axystatus和。 谁能指出我正确的方向?xyzparams

此致。

4

2 回答 2

6

我建议使用UglifyJSesprima之类的解析器来解析代码,提取变量,然后在当前环境中测试它们。我认为这并不难,因为我已经构建了相当多的 JavaScript 代码分析或编译/评估。

但如果您需要更简单、更快捷的解决方案,您也可以尝试JSLint。我们可以将其用作库,只需禁用其他规则并仅保留“未定义变量”。我们可以测试当前环境中的每一个错误,看看它们是否被提供。

于 2013-03-21T11:20:52.353 回答
6

这是使用UglifyJS的方法:

var UglifyJS = require("uglifyjs");
var parsed = UglifyJS.parse(code);
parsed.figure_out_scope();
parsed.globals.each(function(g) {console.log(g.name)});

您可以通过在终端中运行npm install uglifyjsthen来尝试一下。node复制并粘贴var code = (...);问题中的位,然后是上面的代码;这是我得到的结果:

> parsed.globals.each(function(g) {console.log(g.name)});
a
x
y
status
console
xyz
params
于 2014-08-06T07:55:20.450 回答