说明用例(可能编译或不编译)的伪示例代码
+function($){
var enableapp = 'enable-application';
var x = function(something) {
this.thing = something;
this.dosomething();
}
x.prototype.dosomething = function() {
console.log(this.thing);
}
$('[data-fancy]').each(function(index,elem) {
var fancy = $(elem);
if(fancy.is('[data-'+enableapp+']') && fancy.data(enableapp) == 'yes') {
fancy.data('app', new x(fancy));
}
else {
fancy.removeData('app');
}
}(jQuery)
在这个例子中,我启动了一个范围函数来注册我的应用程序' X表示标有数据特征的元素,它们将启用应用程序设置为“是”'
因为我需要多次使用此访问密钥,并且可能会经常更改,所以我决定将其存储在最外层范围内的变量中,我可以将其用于多个检查和平衡。
我的问题是:
如果我不在X应用程序中使用enableapp
变量,那么在最初范围内运行初始课程时会收集垃圾?或者它将保留在内存中,直到最后一个Application对象被清除,并且不再被初始化。
答案 0 :(得分:1)
因为enableapp
未在X应用程序构造函数或原型方法中的任何位置引用,并且仅在forEach
函数的定义时使用 - 它应该在某些时候被垃圾收集。