从JavaScript中的局部变量释放内存

时间:2010-04-21 09:02:55

标签: javascript memory

我有一个JS函数,每隔几秒就在页面上调用一次。这是一个AJAX更新的事情。

作为一个函数,我声明了局部变量。我不想出于各种原因使用闭包或全局变量。

我从来没有考虑过这个问题,但是我是否需要在函数结束时释放/清除变量来释放内存,或者JS会自动为我做这个吗?

3 个答案:

答案 0 :(得分:30)

一般来说,没有。使用var声明的变量是本地变量,并在您返回时进行垃圾回收。如果省略var,则变量是全局变量,并且在某些情况下使用delete关键字对全局变量可能有用,但通常最好使用var声明所有变量不污染window命名空间。

delete在使用基于原型的继承时很有用,例如:

function myclass() {
    this.variable = 'myvalue'
    ...
    delete this.variable // finished with this variable
}
var inst = new myclass()

请记住,如果inst被删除或超出范围(垃圾收集),其中的所有属性也将被删除。 delete对于从哈希表中删除项目也很有用:

var d = {}
d['blah'] = 'myvalue'
...
delete d['blah']

某些特定于浏览器的垃圾收集错误。例如,IE有时在清除DOM元素和闭包等属性方面存在问题,尽管IE8中的许多问题已经减少了。我相信。

答案 1 :(得分:6)

Javascript具有自动垃圾收集功能。你不需要解除任何东西。

答案 2 :(得分:1)

变量一旦超出范围就会被释放,在你的情况下,你的函数中声明的局部变量将被js垃圾收集器自动释放,你不必担心它们。