闭包如何定义以及垃圾回收的小问题

闭包我看描述是说 由函数和其外部词法环境组成,只要函数能够访问外部词法环境中的变量 即为闭包,广义上说任何函数都可以是闭包.

function cd(){

    var a = 0;

    function add(){

        a++;

        console.log(a);

    } 

    add();

}

  

cd(); 

cd();

问题 1 这个代码中 add() 算不算是不是闭包?

function cd(){

    var a = 0;

    function add(){

    a++;

    console.log(a);

    }

    return add();

 }

var test = cd(); test(); test();

问题2 这段代码 哪个是闭包? test是闭包?还是add是闭包?

问题3 垃圾回收机制
变量是怎么回收的? 是在当前的词法环境中 这个变量就没了吗,不存在词法环境的记录项record里面?
闭包使变量不被回收,如何理解?是不是由于闭包存在,导致这个变量在词法环境中一直存在,可以给闭包拿来使用?


慕妹3242003
浏览 442回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript