0

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

我也知道返回的内层函数作用域链会保存外层函数的变量对象,所以可以访问外层函数的变量——这也是吃很多内存的基础,甚至会导致内存泄漏!

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

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

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

outerFunc();

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

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

4

0 回答 0