【发布时间】:2015-02-18 21:06:23
【问题描述】:
function fn(args){
var a= 'something';
doSomething('dummy',function(){
});
}
fn();
在这段代码中,匿名回调是关闭还是执行后退出?如果它变成了一个闭包,我怎么能取回内存,因为它总是可以访问fn的激活对象。
【问题讨论】:
function fn(args){
var a= 'something';
doSomething('dummy',function(){
});
}
fn();
在这段代码中,匿名回调是关闭还是执行后退出?如果它变成了一个闭包,我怎么能取回内存,因为它总是可以访问fn的激活对象。
【问题讨论】:
只有当 lambda 使用封闭函数'(fn) 局部变量或参数时,它才会是一个闭包,例如a 或 args。
Re: 内存恢复 - 不用担心* - GC 将知道何时不再可访问引用并收集它们(无论它们是否在闭包中使用)。 See also here。
【讨论】:
fn 局部变量或arguments,它将是闭包。所以,我每次调用fn 时都会创建闭包& 如何在执行回调后清理范围找回记忆。