JS闭包、自执行函数小记
来源:互联网 发布:剪切一半的数据丢失了 编辑:程序博客网 时间:2024/06/05 07:43
闭包概念:
闭包就是就是函数的“堆栈”在函数返回后并不释放, 当在一个函数内定义内部函数就会产生闭包
当一个内部函数被调用,就会形成闭包,闭包就是能够读取其他函数内部变量的函数
闭包就是函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。
举个栗子:
期望返回结果:
内部函数中执行次数:0内部函数中执行次数:1内部函数中执行次数:2内部函数中执行次数:3内部函数中执行次数:4
1.初版js
/** * main方法中返回一组函数,期望调用时返回不同的结果 */function main(){ var arr = new Array(); for(var i=0;i<5;i++){ arr.push( function(){ return console.log("内部函数中执行次数:"+i); } ); } return arr;}var arrs = main();for(var i=0;i<arrs.length;i++){ arrs[i]();}
实际返回结果:
内部函数中执行次数:5
内部函数中执行次数:5
内部函数中执行次数:5
内部函数中执行次数:5
内部函数中执行次数:5
2.自执行函数概念
声明一个函数,立即执行
一个立即调用的函数表达式可以用来锁定值并且有效的保存此时的状态
引入闭包+自执行函数解决:
/** * main方法中返回一组匿名函数 */function main(){ var arr = new Array(); for(var i=0;i<5;i++){ arr.push( (function(_i){ return function(){console.log("内部函数中执行次数:"+_i);} })(i) ); } return arr;}var arrs = main();for(var i=0;i<arrs.length;i++){ arrs[i]();}
参考:
http://blog.csdn.net/xixiruyiruyi/article/details/54894404
http://www.cnblogs.com/best/p/6206268.html
http://www.cnblogs.com/yanhewu/p/6009266.html
http://blog.csdn.net/chelen_jak/article/details/50568911
http://blog.csdn.net/github_34514750/article/details/52883401
http://blog.csdn.net/xixiruyiruyi/article/details/54646143
- JS闭包、自执行函数小记
- Js中的闭包与自执行函数
- for循环 js定时器 闭包 自执行函数
- JavaScript 自执行函数(闭包)
- 闭包之自执行函数
- js自执行函数
- js自执行函数
- js自执行函数
- js闭包的用途(匿名自执行函数,缓存,实现封装,实现面向对象)
- 匿名函数,自执行函数和闭包
- JS匿名自执行函数
- JS匿名自执行函数
- JS匿名自执行函数
- 关于js自执行函数
- JS自执行匿名函数
- 对自执行函数与闭包的理解
- js自执行函数的定义
- JS中自执行的匿名函数
- HashMap底层源码解读
- 进程间通信-命名管道
- java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false is
- 【Spring】AOP
- 如何理解云计算?很简单,就像吃货想吃披萨了...
- JS闭包、自执行函数小记
- .NET Standard@Xamarin.Forms
- POJ1363Rails
- Node笔记
- 数据库事务及锁机制
- 仿淘宝鼠标悬浮一个区域,该区域显示一个层级块
- 编译安装mysql5.7
- 集合深浅拷贝以及经常遇到的坑(面试常问)
- ubuntu16.04 安装 opencv3.3.0 源代码编译