如果返回的内部函数没有被任何变量引用怎么办?

时间:2013-08-02 08:17:04

标签: javascript memory-leaks scope closures

我知道返回的内部函数可以保存外部函数的变量,这个特性就是所谓的闭包

我也知道返回的内部函数的作用域链将保存外部函数的变量对象,因此它可以访问外部函数的变量 - 这也是吃大量内存的基础,甚至导致内存泄漏!

让我感到困惑的是,如果返回的内部函数没有被任何变量引用,就像这样:

function outerFunc() {  
    var objA = new Object();  
    objA.propertyA = 'propertyA';  
    objA.propertyB = 'propertyB';  

    return function innerFunc() {
        return objA.propertyA + ' ' + objB.propertyB;
    }
}

outerFunc();

如您所见,我没有将返回的innerFunc分配给任何变量,我想知道是否仍会创建innerFunc的范围链?如果上面的代码仍会导致内存浪费 - 甚至内存泄漏?

我记得函数的作用域(或执行上下文)只有在调用函数时才存在,如果是,那么上面的代码不会导致内存泄漏?我不确定,帮助我摆脱它,帮助!

0 个答案:

没有答案