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 Date对象 日期获取函数
Dec 19 Javascript
JavaScript 计算图片加载数量的代码
Jan 01 Javascript
jQuery Masonry瀑布流插件使用详解
Nov 17 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
Sep 04 Javascript
JavaScript基础知识及常用方法总结
Jan 10 Javascript
基于jQuery实现收缩展开功能
Mar 18 Javascript
Node.js 使用流实现读写同步边读边写功能
Sep 11 Javascript
浅谈mint-ui 填坑之路
Nov 06 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
Dec 19 jQuery
vue中监听返回键问题
Aug 28 Javascript
JavaScript canvas绘制折线图
Feb 18 Javascript
如何用JS模拟实现数组的map方法
Jul 30 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字符串截取问题
2006/11/28 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
django 自定义用户user模型的三种方法
2014/11/18 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
Django框架验证码用法实例分析
2019/05/10 Python
Pyqt5实现英文学习词典
2019/06/24 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
pycharm修改file type方式
2019/11/19 Python
python随机模块random使用方法详解
2020/02/14 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
2020/04/26 Python
Python如何对XML 解析
2020/06/28 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
小学网上祭英烈活动总结
2014/07/05 职场文书
买房协议书范本
2014/10/23 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
工程催款通知书
2015/04/17 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python
Python 键盘事件详解
2021/11/11 Python
JavaScript异步操作中串行和并行
2021/11/20 Javascript
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL