在 WSH 中运行并创建对象(例如 Scripting.FileSystemObject 或任何任意 COM 对象)的 Javascript 程序中,完成后是否需要将变量设置为 null?例如,我建议这样做:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fileStream = fso.openTextFile(filename);
fso = null; // recommended? necessary?
... use fileStream here ...
fileStream.Close();
fileStream = null; // recommended? necessary?
效果与仅仅让变量超出范围有不同吗?
将 null 分配给对象变量将减少引用计数器,以便内存管理系统可以在需要时立即丢弃资源。当变量超出范围时,引用计数器将自动递减。因此,几乎在所有情况下手动执行都是浪费时间。
理论上,如果函数在其第一部分使用一个大对象 A,在其第二部分使用另一个大对象 B,则如果中间将 A 设置为 null,则该函数的内存效率可能会更高。但由于这不会迫使彩信销毁 A,因此该声明仍然可能是浪费。
如果你做了一些奇特的类设计,你可能会得到循环引用。然后可能需要用手打破圆圈 - 但也许首先避免这样的循环会更好。
有传言称古代数据库访问对象存在错误,可以通过改变变量来避免这些错误。我不会将我的编程规则建立在这样的巫术之上。
(互联网上有大量的 VBscript 代码充满了“Set X = Nothing”;当被问到时,作者倾向于谈论“习惯”和其他语言(C、C++))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)