关于闭包的学习
2017-09-30 16:57
120 查看
第一,什么是闭包,闭包就是在一个函数的内部定义另一个函数.
第二,它的格式是什么:
function outer(){
var innernum = outernum;
function inner(){
return innernum;
}
return inner;
}
外部是无法防问到内部变量innernum,所以起到一定的保护作用.
第三,闭包通常应用于for语句中,比如在for语句中让10个li标签弹出不同的数字,0~9,如果不用闭包形式,采用一般的for循环语句,是弹出10个数字10来的。
第四,闭包的缺点是,它延长了变量的生命周期,占据一定的内存。
闭包在网页中用得最多例子之一:
![](https://img-blog.csdn.net/20170930174244518?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU3RlcGhlbl9fV3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
只可惜上图是一个错误的写法
![](https://img-blog.csdn.net/20170930174222601?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU3RlcGhlbl9fV3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
上面的写法错误了,因为onclick绑定的事件的参数不能传,默认是event
所以只能在外面的outer里面传参数了
![](https://img-blog.csdn.net/20170930174445441?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU3RlcGhlbl9fV3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
最后附上团包最通用的写法:
for (var i = 0; i < 10; i++) {
arr[i] = function outer(a) {
var num = a;
function inner() {
return num;
};
return inner;
}(i);
}
第二,它的格式是什么:
function outer(){
var innernum = outernum;
function inner(){
return innernum;
}
return inner;
}
外部是无法防问到内部变量innernum,所以起到一定的保护作用.
第三,闭包通常应用于for语句中,比如在for语句中让10个li标签弹出不同的数字,0~9,如果不用闭包形式,采用一般的for循环语句,是弹出10个数字10来的。
第四,闭包的缺点是,它延长了变量的生命周期,占据一定的内存。
闭包在网页中用得最多例子之一:
只可惜上图是一个错误的写法
上面的写法错误了,因为onclick绑定的事件的参数不能传,默认是event
所以只能在外面的outer里面传参数了
最后附上团包最通用的写法:
for (var i = 0; i < 10; i++) {
arr[i] = function outer(a) {
var num = a;
function inner() {
return num;
};
return inner;
}(i);
}
相关文章推荐
- 关于闭包的学习
- 关于闭包的一些学习思考
- 学习nodejs第一课,关于js的闭包问题。
- Groovy学习笔记之关于闭包的一些补充
- 关于js匿名函数以及闭包的学习(一)
- python学习笔记 --- 关于python的闭包
- 关于闭包的理解(JS学习小结)
- 关于一个工程中多个文件的相互调用的学习笔记(C语言)
- 关于xml学习的一点思考与总结
- 黑马程序员_关于java异常机制的学习
- Java中关于时间的学习日志
- ios:关于ARC的初步学习
- ios学习笔记:关于Quartz2D使用(矩阵操作)
- osg for android 学习之八:关于StateSet
- JS学习之闭包、this关键字、预解释、作用域综合
- JavaScript 闭包学习
- 关于PE病毒编写的学习(六)——关于PE文件结构操作的程序编写
- 学习一篇关于MMSE的语音信号增强的算法
- 关于闭包与for循环的理解
- 关于stun学习笔记1