【问题标题】:How can I detect leaking variables into a global namespace?如何检测泄漏到全局命名空间中的变量?
【发布时间】:2014-05-13 19:09:09
【问题描述】:

我注意到我的代码中有大量变量泄漏到全局命名空间中。有没有办法自动找到此类泄漏并报告它们在代码中的位置?

我认为像 jslint / jshint 这样的代码质量工具可以帮助我,但是通过他们的文档我找不到任何与此相关的东西(尽管它看起来像 it should exist)。我在谷歌上的标题中找不到很多带有关键字的信息。为数不多的相关发现之一是来自2009 的这篇帖子。

【问题讨论】:

  • 一个简单的检查可能是在你的脚本之前Object.keys(window)for..in,然后在之后做同样的事情并比较任何差异。然后在您的代码中搜索这些名称并检查它们。

标签: javascript jslint jshint


【解决方案1】:

JSLint online tool 向您显示那里有哪些全局变量

【讨论】:

  • 但是除了全局变量之外,'use strict' 会报告很多其他问题吗?
  • 跟use strict没关系...不用的话可以去掉。
【解决方案2】:

也许做这样的事情

for (var inGlobalScope in window) {
        console.log(inGlobalScope);
    }

然后查看日志条目列表以确定不应该在全局范围内的内容。

【讨论】:

  • 我已经知道如何找到全局变量,我正在寻找一种方法来找到它们在代码中的引入位置。
猜你喜欢
  • 1970-01-01
  • 2012-03-13
  • 2014-02-17
  • 2011-03-25
  • 1970-01-01
  • 2011-08-31
  • 2017-01-04
  • 1970-01-01
  • 2015-08-10
相关资源
最近更新 更多