闭包--整理
来源:互联网 发布:商城系统数据库设计 编辑:程序博客网 时间:2024/06/06 12:40
(文章说明:关于对闭包的解释,有位大神总结的很好,我就直接转啦;其余部分为自己整理)
一、什么是闭包?
JavaScript中所有的function都是一个闭包。不过一般来说,嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的“闭包”。
原理:所谓“闭包”,就是在构造函数体内定义另外的函数作为目标对象的方法函数,而这个对象的方法函数反过来引用外层函数体中的临时变量。这使得只要目标对象在生存期内始终能保持其方法,就能间接保持原构造函数体当时用到的临时变量值。尽管最开始的构造函数调用已经结束,临时变量的名称也都消失了,但在目标对象的方法内却始终能引用到该变量的值,而且该值只能通这种方法来访问。即使再次调用相同的构造函数,但只会生成新对象和方法,新的临时变量只是对应新的值,和上次那次调用的是各自独立的。
闭包实例与分析
function a() { var i = 0; function b() { alert(++i); } return b;}var c = a();c();这段代码有两个特点:
1、函数b嵌套在函数a内部;
2、函数a返回函数b。
这样在执行完var c=a()后,变量c实际上是指向了函数b,再执行c()后就会弹出一个窗口显示i的值(第一次为1)。这段代码其实就创建了一个闭包。因为函数a外的变量c引用了函数a内的函数b,就是说:当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。
二、用途:
一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
三、缺点:
常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
四、作用(使用场景):
可以用来管理私有变量和私有方法,将对变量(状态)的变化封装在安全的环境中,使得这些变量不能被外部随意修改,同时又可以通过指定的函数接口来操作。
五、闭包有三个特性:
1.函数嵌套函数
2.函数内部可以引用外部的参数和变量
3.参数和变量不会被垃圾回收机制回收
- 闭包整理
- JavaScript闭包整理
- 闭包--整理
- Javascript 闭包细节整理
- JS闭包知识点整理
- Golang闭包 特性整理
- 整理的闭包问题
- 整理贴,NET中的闭包。
- javascript的闭包closure整理
- 深入理解javascript闭包【整理】
- 整理贴,NET中的闭包。
- 关于javascript闭包--整理篇
- 原型和闭包(整理)
- Java 常用包整理
- [整理] RPM包制作
- Android 重要包整理
- jar包整理
- meteor 常用包 整理
- HDU 2853 Assignment(二分图最优匹配:优先用原匹配边)
- [Linux]--标准文件 IO 基本操作
- nrf51822/nrf52832开发过程中一些常用的API函数
- 如何正确使用Bundle
- android webview组件的使用
- 闭包--整理
- UVA 11235(丑)
- mysql主从复制的实现
- hbase日常操作以及日常维护
- 数组、List、字典相互转换
- C++笔记_01深入编译链接和运行
- 算法导论习题自作2.1-1
- 高性能MYSQL---索引读书笔记
- poj 3281 Dining