在JavaScript中删除不再使用的对象和变量是一种好习惯吗?

时间:2010-01-01 13:52:57

标签: javascript

在我的代码中,我在函数中使用了一个对象和变量。在该函数中,我不再使用我删除它的对象和变量:

delete myObject;
delete myVar;

这是好的做法吗? 它能提速吗?

我的JavaScript在smart.joyent.com上是服务器端。

4 个答案:

答案 0 :(得分:6)

  

这是好的做法吗?

没有。事实上,在新的ECMAScript第五版'严格模式'中它是不允许的:

  

当严格模式代码中出现删除操作符时,如果其UnaryExpression是对变量,函数参数或函数名称的直接引用(11.4.1),则抛出SyntaxError。

如果你真的必须,你可以改为=null变量来释放它为垃圾收集引用的任何对象,但它几乎不会导致任何明显的性能提升。

删除长期存在的对象的属性以释放现在未使用的引用对象可能是一个好主意,尤其是在打破DOM循环以防止IE中的内存泄漏的情况下。删除短期函数中的局部变量是不明智的。

答案 1 :(得分:1)

我不确定您的服务器使用什么引擎,但客户端引擎通常使用垃圾收集,如果您的服务器环境也是如此,我也不会感到惊讶。除非你有一个非常特殊的情况,否则大多数手动清理尝试可能与垃圾收集器相同(或者不利于垃圾收集器)。

总之,我敢打赌你看到性能完全没有区别。这是微优化的一个很好的例子。

答案 2 :(得分:1)

而且使用delete方法,似乎Firefox 3允许脚本使用:

调用垃圾收集器
Components.utils.forceGC

请参阅https://developer.mozilla.org/En/Components.utils.forceGC

其他浏览器也可能提供类似的功能。 (IE除外,我不认为它提供。)

答案 3 :(得分:0)

通常认为没有必要,但在极端情况下,高记忆情况可能是您应该研究的问题。我觉得在分析和性能测试之前使用它是不成熟的优化。