【发布时间】:2013-05-11 20:26:38
【问题描述】:
我有一个关于 JavaScript 隐藏或不可见变量的问题。因为它们不是在全局上下文中创建的。当我们编写大型 Web 应用程序时,一些变量或函数是不可分割的,但我们不知道它们的存在。他们像 CPU、GPU 一样吃掉我们的资源。例如,我总是希望匿名函数中的所有变量在执行后都会被删除(当然,如果没有从上层上下文中引用它)。在此示例中,我无法在任何地方看到 interval 变量,但它始终写入控制台 interval id。
(function () {
var interval = setInterval(function(){
console.log(interval.toLocaleString());
// some heavy operation
}, 1000);
})();
另一个例子是我在 Backbone.js 中创建了视图,然后我意识到删除视图后它也存在。 我的问题是,如何找到或查看所有存在但在全局上下文中不可见的变量?
【问题讨论】:
-
interval消耗您的计算机资源与console.log()工作无关。 -
示例中的变量“interval”在调用匿名函数后不需要保持活动状态,因为闭包(计时器处理程序)中没有对它的引用。
-
Tools for debugging memory leaks in JavaScript 的可能重复项 - 不确定您实际要求的是什么;您可以在浏览器的 JavaScript 调试器中检查这些变量
-
@Pointy 我已将区间
variable添加到setInterval中。你怎么看,interval变量在匿名函数调用后是生是死?而且我想知道在全局上下文中不可见的变量。 -
看看这个关于闭包的页面。 stackoverflow.com/questions/111102/…。在您的示例中,间隔不会“死亡”,因为通过在您创建闭包的函数中调用函数。毫无疑问,有人将能够更好地解释它。阅读上面的链接。
标签: javascript variables scope