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 相关文章推荐
javascript学习笔记(十九) 节点的操作实现代码
Jun 20 Javascript
当某个文本框成为焦点时即清除文本框内容
Apr 28 Javascript
Jquery节点遍历next与nextAll方法使用示例
Jul 22 Javascript
node.js中的fs.symlink方法使用说明
Dec 15 Javascript
js操作cookie保存浏览记录的方法
Dec 25 Javascript
vue.js中mint-ui框架的使用方法
May 12 Javascript
Three.js开发实现3D地图的实践过程总结
Nov 20 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
Oct 09 Javascript
vue 移动端适配方案详解
Nov 15 Javascript
vue开发中遇到的问题总结
Apr 07 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
Apr 28 Javascript
javascript实现简单页面倒计时
Mar 02 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
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
php字符串截取问题
2006/11/28 PHP
c#中的实现php中的preg_replace
2009/12/21 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
js实现滚动条自动滚动
2020/12/13 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
python文件操作之批量修改文件后缀名的方法
2018/08/10 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
留学自荐信
2013/10/10 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
政协工作总结2015
2015/05/20 职场文书
建筑工程催款函
2015/06/24 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python