如何在JavaScript中搜索全局变量

4
有没有工具或正则表达式可以帮助获取JavaScript项目中所有全局变量的列表?
4个回答

8
您可以循环遍历window对象来查询所有全局定义的数据(包括预定义的变量和函数):
for (var key in window) {
    console.log(key + "=" + window[key]);
}

为了分析源代码,请使用JSLint


值得一提的是,for..in 只会返回可枚举属性,而且最好严格使用全局对象,因为并非所有用户代理都有窗口对象。 - RobG

2

我很喜欢Firefox上的Firebug扩展程序。

这里是DOM选项卡,列出全局对象(即window)中的所有属性,并按类型着色,这些基本上就是您的全局变量。

Firebug DOM tab


1
您可以使用浏览器扩展程序来帮助处理以下事项:
- Firefox中的Firebug扩展程序
- Chrome中的开发者工具窗口
- Opera中的Dragonfly

0
我使用了这个正则表达式来显示项目代码中的所有JavaScript变量。
[a-zA-Z0-9]* = .*;

然后我目视扫描匹配项,确保所有变量都不是全局的。(即它们旁边有“vars”,只要它们不是传递给函数的参数)。

对于我来说,我使用Sublime Text 2强大的多文件搜索功能,允许正则表达式并禁用匹配周围的上下文。我还告诉搜索仅在包含我的JavaScript文件的文件夹中搜索,这样它就不会显示来自其他框架或语言的变量。这使得每个变量都一个接一个地出现,更容易看到任何全局变量泄漏。

希望这能帮到你,并且没有太多混淆。我是一个正则表达式新手,但是这对我有效。在大约5分钟内,我已经在自己的项目中找到了3个全局泄漏。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接