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 字符串操作函数
Jul 25 Javascript
jQuery 处理表单元素的代码
Feb 15 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
May 24 Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 Javascript
Javascript 调用 ActionScript 的简单方法
Sep 22 Javascript
微信小程序 wxapp内容组件 progress详细介绍
Oct 31 Javascript
如何在Angular2中使用jQuery及其插件的方法
Feb 09 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
Aug 08 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
在vue中使用vuex,修改state的值示例
Nov 08 Javascript
vue element-ul实现展开和收起功能的实例代码
Nov 25 Vue.js
JavaScript中Object、map、weakmap的区别分析
Dec 15 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中根据变量的类型 选择echo或dump
2012/07/05 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
PDO::prepare讲解
2019/01/29 PHP
checkbox使用示例
2013/08/23 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
原生js实现分页效果
2020/09/23 Javascript
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
药学专业大学生自荐信
2013/09/28 职场文书
暑期政治学习心得体会
2014/09/02 职场文书
无犯罪记录证明
2014/09/19 职场文书
农业项目合作意向书
2015/05/08 职场文书
会计实训总结范文
2015/08/03 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
Python实现拼音转换
2021/06/07 Python
MySQL基于索引的压力测试的实现
2021/11/07 MySQL