在JavaScript中,当完成通过新ActiveXObject创建的对象时,是否需要将其设置为null?

Che*_*eso 3 javascript wsh activexobject jscript

在WSH中运行并创建对象的Javascript程序中,假设是Scripting.FileSystemObject或任意COM对象,我在完成它时是否需要将变量设置为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?
Run Code Online (Sandbox Code Playgroud)

效果不同于让变量超出范围吗?

Ekk*_*ner 5

将null分配给对象变量将减少引用计数器,以便内存管理系统可以丢弃资源 - 只要它感觉像这样.当变量超出范围时,引用计数器将自动递减.因此,手动操作几乎在所有情况下都是浪费时间.

理论上,如果A在中间设置为null,则在其第一部分中使用大对象A而在第二部分中使用另一个大对象B的函数可以更有效.但由于这并没有迫使mms摧毁A,这种说法仍然是一种浪费.

如果你做一些花哨的课程设计,你可能会得到循环参考.然后用手打破圆圈可能是必要的 - 但是首先避免这样的循环会更好.

有传言称古代数据库访问对象存在可以通过切换变量来避免的错误.我不会将我的编程规则建立在这样的伏都教上.

(互联网上有大量的VBscript代码充满了"Set X = Nothing";当被问到时,作者倾向于谈论'习惯'和其他语言(C,C++))