如何从外部读取局部变量?

闭包就是能够读取其他函数内部变量的函数。

由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。

所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

function outerFun()
{
 var a=0;
 function innerFun()
 {
  a++;
  alert(a);
 }
 return innerFun;  //注意这里
}
var obj=outerFun();
obj();  //结果为1
obj();  //结果为2
var obj2=outerFun();
obj2();  //结果为1
obj2();  //结果为2

什么是闭包:

当内部函数 在定义它的作用域 的外部 被引用时,就创建了该内部函数的闭包 ,如果内部函数引用了位于外部函数的变量,当外部函数调用完毕后,这些变量在内存不会被 释放,因为闭包需要它们.

闭包的作用:

简而言之,闭包的作用就是在a执行完并返回后,闭包使得Javascript的垃圾回收机制GC不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。

参考自:http://www.jb51.net/article/24101.htm

最新文章

  1. 适合WebApi的简单的C#状态机实现
  2. 深入理解unslider.js源码
  3. Robotium-无源码测试
  4. jquery操作radio单选按钮、checked复选框。
  5. JS 之DOM对象(2)
  6. .net 实现 URL重写,伪静态(方法一)
  7. 本学习笔记TCP/IP传输协议
  8. Bitmap与Matrix旋转ImageView
  9. Dynamics 365 Online-多选域
  10. linux 运维,代理,acl控制访问
  11. WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件
  12. UVA12563-Jin Ge Jin Qu hao(动态规划基础)
  13. 编写Excel文件的Golang库
  14. Advanced Wlan Attacks (RADIUS)
  15. Domain Adaptation (3)论文翻译
  16. 第二个spring, 第7天
  17. JDK8 Java 中遇到null 和为空的情况,使用Optional来解决。
  18. 团队项目设计完善&编码测试
  19. 一日游 + 进度psp
  20. 尼基塔第一季/全集Nikita迅雷下载

热门文章

  1. Protected Functions 是理解OO的难点和关键
  2. Android:使用ViewPager实现左右滑动切换图片(图上有点点)
  3. WPF之Behavior
  4. std::advance 给迭代器增加指定偏移量
  5. DBNull.Value 字段的用法
  6. 约瑟夫环问题-循环链表VS数组
  7. Mac修改用户名
  8. get mac 20150202
  9. bzoj1607: [Usaco2008 Dec]Patting Heads 轻拍牛头
  10. Linux SocketCan client server demo hacking