JavaScript中的闭包


Posted in Javascript onFebruary 24, 2016

1、什么是闭包

闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

简单的说,Javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。

闭包的特点

1 函数嵌套函数

2 函数内部可以引用外部的参数和变量

3 参数和变量不会被垃圾回收机制回收

一般函数执行完毕后,局部活动对象就被销毁,内存中仅仅保存全局作用域。但闭包的情况不同!

function fn(){
var a = ;
function fn(){
//可以访问fn中定义的a值
alert( a++ );
}
fn();
}
fn(); //
fn(); // 
function fn(){
var a = ;
function fn(){
//可以访问fn中定义的a值
alert( a++ );
}
return fn;//
}
var f = fn();
f(); // 执行完后a还在内存中
f(); //
f = null; //a被回收

以上所述是小编给大家介绍JavaScript中的闭包,希望对大家有所帮助!

Javascript 相关文章推荐
一个简单的JS鼠标悬停特效具体方法
Jun 17 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
Mar 03 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
Aug 03 Javascript
JavaScript计划任务后台运行的方法
Dec 18 Javascript
Bootstrap3 Grid system原理及应用详解
Sep 30 Javascript
webstorm添加vue.js支持的方法教程
Jul 05 Javascript
form表单序列化详解(推荐)
Aug 15 Javascript
vue基于Element构建自定义树的示例代码
Sep 19 Javascript
node打造微信个人号机器人的方法示例
Apr 26 Javascript
解决Mac安装thrift因bison报错的问题
May 17 Javascript
JavaScript 截取字符串代码实例
Sep 05 Javascript
Vue路由 重定向和别名的区别说明
Sep 09 Javascript
jQuery中判断对象是否存在的方法汇总
Feb 24 #Javascript
jquery中键盘事件小结
Feb 24 #Javascript
javascript实现九宫格相加数值相等
May 28 #Javascript
Javascript类型转换的规则实例解析
Feb 23 #Javascript
理解Javascript图片预加载
Feb 23 #Javascript
Bootstarp风格的toggle效果分享
Feb 23 #Javascript
javascript瀑布流式图片懒加载实例解析与优化
Feb 23 #Javascript
You might like
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
ES6中let 和 const 的新特性
2018/09/03 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
python处理csv数据的方法
2015/03/11 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
Python基于分水岭算法解决走迷宫游戏示例
2017/09/26 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
python psutil监控进程实例
2019/12/17 Python
python os模块在系统管理中的应用
2020/06/22 Python
python的setattr函数实例用法
2020/12/16 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
小学见习报告
2014/10/31 职场文书
初中中等生评语
2014/12/29 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL