Javascript 闭包
来源:互联网 发布:stc单片机引脚图 编辑:程序博客网 时间:2024/06/03 17:47
当函数可以记住并访问该函数所在的词法作用域时,就产生了闭包,即函数在当前的词法作用域之外执行。当函数跳出当前的词法作用域之外,但是该函数有对它所在的词法作用域的引用,这样采用标记--清除算法的Javascript垃圾回收机制,就能够从根部出发找到该词法作用域。因此,该词法作用域不会被垃圾回收。这样,该块词法作用域可以和全局变量一样存储在内存中,直到没有应用只想该块词法作用域(也就是从根出发无法找到该块词法作用域)。
for (var i =1 ; i<=5; i++){ setTimeout(function Timer(){ console.log(i)}, i*1000);}上面的例子也是闭包的一种,即函数在当前的词法作用域之外被调用。该函数会以每秒一次的频率输出5次6,因为当Timer()函数执行时,此时的i==6,所以循环调用的setTimeout()函数都访问同一个全局变量i。
如何能够让该函数以每秒一次的频率输出1~5呢?
这时就要为每次调用的setTimeout()函数创建一个闭包作用域:
for(var i =1 ;i <=5 ;i++){ (function (j){ setTimeout(function Timer(){ console.log(i)}, i*1000);})(i);}
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闭包技术
- Activity之间跳转的工具类
- 分布式架构高可用架构_Keepalived+Nginx实现高可用Web负载均衡
- iOS Quartz-2d画图 - 简单
- 灵活利用泛型的MVP模式T-MVP(附带一个快速创建MVP接口的Android Studio插件-TMVPHelper)
- tomcat+apache负载均衡
- Javascript 闭包
- 欢迎使用CSDN-markdown编辑器
- Spring中bean之间的引用以及内部bean
- mysql ReplicationDriver做读写分离
- CSS基础
- 魅族自动化测试架构之路
- 虚拟专用网(三)
- 脏读、不可重复读、幻读区别
- C++回顾 控制台应用程序窗口暂停