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函数ajax
Aug 20 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
Aug 08 Javascript
javascript对select标签的控制(option选项/select)
Jan 31 Javascript
页面刷新时记住滚动条的位置jquery代码
Jun 17 Javascript
使用js获取图片原始尺寸
Dec 03 Javascript
jquery实现树形菜单完整代码
Dec 29 Javascript
jQuery的实例及必知重要的jQuery选择器详解
May 20 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
Nov 03 Javascript
JS控件bootstrap datepicker使用方法详解
Mar 25 Javascript
CSS3 动画卡顿性能优化的完美解决方案
Sep 20 Javascript
基于vue实现简易打地鼠游戏
Aug 21 Javascript
Vue封装全局过滤器Filters的步骤
Sep 16 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
php4的session功能评述(一)
2006/10/09 PHP
php 代码优化的42条建议 推荐
2009/09/25 PHP
功能强大的php分页函数
2016/07/20 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
extjs render 用法介绍
2013/09/11 Javascript
js匿名函数的调用示例(形式多种多样)
2014/08/20 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
详解babel升级到7.X采坑总结
2019/05/12 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
python音频处理的示例详解
2020/12/23 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
软件设计的目标是什么
2016/12/04 面试题
团代会宣传工作方案
2014/05/08 职场文书
建筑结构施工求职信
2014/07/11 职场文书
青年文明号申报材料
2014/12/23 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python
 Python 中 logging 模块使用详情
2022/03/03 Python