繁体   English   中英

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

[英]Is it good practice to delete no longer used objects and variables in JavaScript?

在我的代码中,我在函数内使用对象和变量。 在该函数中,不再使用对象和变量时,将其删除:

delete myObject;
delete myVar;

这是好习惯吗?
有速度吗?

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

这是好习惯吗?

否。实际上,新的ECMAScript第五版“严格模式”不允许这样做:

当在严格模式代码内发生删除运算符时,如果其UnaryExpression是对变量,函数参数或函数名称(11.4.1)的直接引用,则会引发SyntaxError。

如果确实需要,则可以改为=null变量以释放它引用的用于垃圾回收的任何对象,但是几乎永远不会导致性能的任何明显改善。

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

我不确定您的服务器使用的是哪种引擎,但是客户端引擎通常会使用垃圾回收,如果您的服务器环境也是如此,我也不会感到惊讶。 除非您有非常特殊的情况,否则大多数手动清理的尝试可能会与垃圾收集器同等(或针对垃圾收集器进行工作)。

总而言之,我敢打赌,您会发现性能绝对没有区别。 这是微优化的一个很好的例子。

并且似乎也没有使用delete方法,Firefox 3似乎允许脚本通过以下方式调用垃圾收集器:

Components.utils.forceGC

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

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

通常认为它不是必需的,但是在极端情况下,您可能应该考虑内存不足的情况。 我确实认为在性能分析和性能测试之前使用它会过早优化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM