referenceToInnerFunction

referenceToInnerFunction

看这个例子,当我们设置outerFunction = null;时,我很难理解到底发生了什么。我的第一个想法就是function outerFunction(){ //nothing }。但是,当调用referenceToInnerFunction时,我们仍然可以获得猴子值。我敢肯定这与范围有关,但我无法将其包裹住。另外,如何解决此问题,以便在我呼叫referenceToInnerFunction时也得到null,与monkey?相对

function outerFunction() {
    var outerVar = "monkey";

    function innerFunction() {
        return outerVar;
    }

    return innerFunction;
}

var referenceToInnerFunction = outerFunction();
alert(referenceToInnerFunction());

outerFunction = null;
alert(referenceToInnerFunction());

最佳答案

javascript的现代实现的垃圾收集器算法认为,某些东西在无法到达时可以被垃圾收集。在这里referenceToInnerFunction可以访问outerVar,因为

var referenceToInnerFunction = outerFunction();


因此,只要您保留某些可以访问outerVar的权限,就不可能将其释放。

更多内容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management

关于javascript - 分析闭包示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38170123/

10-11 06:39