如果作用域是无用的,那么它们会被清理吗?
Do scopes get cleaned up if they are useless?
说明用例的伪示例代码(可能编译,也可能不编译)
+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)
在这个例子中,我启动了一个作用域函数,将我的' application ' X注册到标记为data-fancy的元素,这些元素已将enable-application设置为'yes'
因为我需要多次使用这个访问键,并且可能会经常更改,所以我决定将它存储在最外层作用域的一个变量中,在那里我可以使用它进行几个检查和平衡。
我的问题是
如果我在X应用程序中不使用enableapp
变量,那么当初始过程运行时,最外层作用域会被垃圾收集吗?或者它会一直留在内存中,直到最后一个Application对象被清除,并且不再被初始化。
由于enableapp
在X应用程序构造函数或原型方法中没有任何引用,并且仅在定义时在forEach
函数中使用-它应该在某个时候被垃圾收集。
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- 调用私有作用域
- 对父作用域的指令更新延迟了一步
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 在具有命名作用域的自定义Polymer元素中隐藏表行
- AngularJS指令隔离作用域
- Angularjs:修改js中的作用域,稍后在页面中使用
- 访问多个指令的隔离作用域
- Javascript作用域和Ajax调用;工作不正常
- 向Angular作用域对象添加对象数组——TypeError
- ng重复中的ng模型-初始化唯一作用域属性
- 在put方法之前从作用域获取数据
- 如何在html中以角度显示自定义指令的作用域
- 当提供函数名称时,检查函数是否存在于同一作用域中
- 如果作用域是无用的,那么它们会被清理吗?