正在回答
1回答
同学你好,解答如下:
函数内部的变量被全局中的变量引用,导致函数形成的作用域不会被销毁,就会形成闭包。正常情况下,函数执行完,它形成的作用域就会被销毁(js的机制,记住即可)。但是闭包可以让函数形成的作用域不被销毁,比如下面的例子:
第一次调用fn时,fn会形成一个作用域,该作用中存在变量age:
而全局变量f的值,是函数fn使用return关键字返回的函数,并且该函数会使用fn中的变量age:
此时全局的变量f,就与fn内的age有了引用关系:
此时js就不会让fn形成的作用域销毁,因此多次调用f,访问的都是fn()形成的那个作用域中的age(现象就是打印的age值可以递增):
此时fn和fn形成的作用域,以及fn内的变量就称为闭包。
因此,闭包的作用之一就是让我们能够在全局中操作函数内的变量,而它的形式之一就是“函数A嵌套函数B,并返回函数B,同时B中使用A中的变量,然后全局中利用函数B,访问A中的变量”。
关于闭包,暂时了解这么多即可。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星