当前位置: 首页 > Web前端 > HTML

一篇文章足以学习闭包

时间:2023-04-02 17:37:03 HTML

1.关闭是什么意思?Closure=function+function可以访问的自由变量,写一段代码说明什么意思vara=3;functionfoo(){console.log(a);}foo();这就形成了一个闭包,为什么是羊毛布?函数可以访问变量a,但是a既不是局部变量也不是foo函数的参数,所以a更全面的定义是自由变量1。即使创建它的上下文已经被破坏,它仍然存在(比如一个内部函数Returnedfromtheparentfunction),没有被释放2.代码中引用了自由变量,什么时候使用是未知的,会一直存在2.我们需要了解这个过程详细*以上代码varscope="globalscope";//这是全局自由变量functioncheckscope(){varscope="localscope";//这是函数中使用的局部变量functionf(){//函数返回范围内的f函数;}returnf;}varfoo=checkscope();foo();重点是把整个流程理解清楚,那么这个时候你需要思考的问题是什么?结果是怎么来的?f函数执行时,checkscope函数上下文已经被销毁(从执行上下文栈中弹出),那么如何读取checkscope作用域下的作用域值呢?回想一下,当我们理解具体的执行过程时,我们知道f执行上下文维护了一个作用域链:fContext={Scope:[AO,checkscopeContext.AO,globalContext.VO],}3.写一个要求的Exam题目(你来了如果你没有参加考试,对我来说)vardata=[];for(vari=0;i<3;i++){data[i]=function(){console.log(i);};}数据[0]();数据[1]();数据[2]();答案更容易弄清楚,但为什么呢?如何描述过程?如果我改成leti会是什么结果?4.更多信息请查看githubhttps://github.com/huanh不自由