js难点之闭包理解
2024-10-19 06:23:09
如何从外部读取局部变量?
闭包就是能够读取其他函数内部变量的函数。
由于在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
最新文章
- 适合WebApi的简单的C#状态机实现
- 深入理解unslider.js源码
- Robotium-无源码测试
- jquery操作radio单选按钮、checked复选框。
- JS 之DOM对象(2)
- .net 实现 URL重写,伪静态(方法一)
- 本学习笔记TCP/IP传输协议
- Bitmap与Matrix旋转ImageView
- Dynamics 365 Online-多选域
- linux 运维,代理,acl控制访问
- WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件
- UVA12563-Jin Ge Jin Qu hao(动态规划基础)
- 编写Excel文件的Golang库
- Advanced Wlan Attacks (RADIUS)
- Domain Adaptation (3)论文翻译
- 第二个spring, 第7天
- JDK8 Java 中遇到null 和为空的情况,使用Optional来解决。
- 团队项目设计完善&;编码测试
- 一日游 + 进度psp
- 尼基塔第一季/全集Nikita迅雷下载