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 相关文章推荐
屏蔽网页右键复制和ctrl+c复制的js代码
Jan 04 Javascript
Express系列之multer上传的使用
Oct 27 Javascript
Node.js中sequelize时区的配置方法
Dec 10 Javascript
Layer弹出层动态获取数据的方法
Aug 20 Javascript
Vue.js 图标选择组件实践详解
Dec 03 Javascript
vue项目中mock.js的使用及基本用法
May 22 Javascript
Node爬取大批量文件的方法示例
Jun 28 Javascript
react 生命周期实例分析
May 18 Javascript
js判断鼠标移入移出方向的方法
Jun 24 Javascript
vue路由分文件拆分管理详解
Aug 13 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
Sep 02 Javascript
一分钟学会JavaScript中的try-catch
Dec 14 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和PHP5共存于一系统
2006/11/17 PHP
PHP管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
python logging模块的使用总结
2019/07/09 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
eBay美国官网:eBay.com
2020/10/24 全球购物
介绍一下linux的文件系统
2012/03/20 面试题
大学团支书的自我评价分享
2013/12/14 职场文书
个人查摆剖析材料
2014/02/04 职场文书
矿泉水广告词
2014/03/20 职场文书
盗窃案辩护词
2015/05/21 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP
详解Laravel框架的依赖注入功能
2021/05/27 PHP
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang