【发布时间】:2012-10-25 19:23:13
【问题描述】:
不知道下面的伪jQuery代码是否会发生内存泄漏(因为成功回调总是有_this的引用)?
var _this = this;
$.ajax({
url: "foo",
type: "POST",
data: data,
success: function() {
// Do stuff with _this
_this.doStuffs();
})
【问题讨论】:
-
那是因为你在更高的范围内声明了
_this,并且变量仍然可以访问? -
_this 将始终可用。这就是为什么我想知道这种模式是否会导致任何内存泄漏?我认为这可能是因为“成功”回调将始终引用 _this(因此垃圾收集不会拾取它)
-
我不是这方面的专家,但是当声明一个变量时,它将在该范围内或更低范围内的函数中可用,该成功函数没有什么神奇的不同,_this 变量是可访问的,因为它已被声明在更高的范围内,就像在任何其他函数中一样,这就是通常编写 javascript 的方式。
标签: javascript jquery memory-leaks closures