JavaScript闭包
来源:互联网 发布:淘宝开店教程ppt下载 编辑:程序博客网 时间:2024/06/02 03:56
百度百科这样解释闭包:闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)。
这段话让人头晕,什么闭包呢,我觉得理解闭包是什么,不如了解什么时候会形成闭包。
说到闭包就不得不谈JavaScript解析器的GC,已知GC会回收掉无用的局部变量,当我用一种方法让GC无法回收这个局部变量,这样就形成了闭包。
function a() {var c = 0;var d = 0;d++;function b() {c++;console.log("c" + c);}console.log("d" + d);return b;}var m = a();for (var i = 0; i < 2; i++) {m();}函数a定义了局部变量c,d,内嵌函数b,b对a中的局部变量进行了++运算,a返回了函数b,m=a()即m=b,每次调用m()等于b(),也即c++,以为我随时都可能调用变量c,所以c不会被GC回收,实现了累加的功能,这就是闭包
0 0
- 【JavaScript】Javascript闭包
- javascript的闭包javascript
- Javascript闭包演示javascript
- [ javascript ] javascript闭包测试!
- 【javascript】javascript中的闭包
- 【javascript】学习Javascript闭包
- 理解 JavaScript 闭包
- javascript 闭包
- javascript闭包
- Javascript闭包
- JavaScript中的"闭包"
- JavaScript 闭包
- javascript中的闭包
- 理解 JavaScript 闭包
- Javascript Closures[闭包]
- javascript闭包
- Javascript 闭包详解
- Javascript闭包技术
- 动态代理
- android Bitmap总结
- 对称与非对称加密
- eclipse插件手动安装(link)
- HDU 4261 Estimation(set预处理中位数+dp+缺页中断t个爽)
- JavaScript闭包
- 让你快速认识flume及安装和使用flume1.5传输数据(日志)到hadoop2.2
- android-线程 (从java开始)案例
- leetcode | 3Sum Closest
- 使用zookeeper管理多个hbase集群
- 分享一下我电脑里的软件
- 探讨LoadRunner的并发用户和集合点
- 黑马程序员—OC语言小知识点及示例
- 校验码检验