五、闭包(理解)
5.1、闭包的定义
官方解释是:闭包,指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量。
我的理解是:闭包函数是对作用域的一个应用,应用的就是函数可以使用函数之外的变量,并且闭包函数所在的作用域会一直保存在内存中。
所以闭包函数的特点是:
- 闭包函数可以使用函数之外的变量;
- 闭包函数会一直保存在内存中,不会被释放。
5.2、使用到闭包函数的例子
5.2.1、获取函数内部的局部变量
05获取函数内部的局部变量.html 代码:
1 | function t1(){ |
闭包函数所在的作用域不会被释放,一直存在内存中,下面的例子中,如果闭包函数getA被释放了,则每次调用myGetA都会输出1,而输出结果是1/2/3,说明闭包函数所在的作用域不会被释放。
1 | <script> |
5.2.2、每隔一秒,输出一个数
07每隔一秒输出一个数.html
1 |
|
5.2.3、点击li 标签,弹出 li 对应的下标
08点击li弹出对应的下标.html 代码
1 | <script> |
总之,很多高级的应用程序都会使用到闭包,但是滥用闭包会造成内存的消耗。
后面我们会有一个综合的 “淡入淡出图片” 案例,那里面就会用到闭包。