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 相关文章推荐
一个收集图片的bookmarlet(js 刷新页面中的图片)
May 27 Javascript
jQuery validate 中文API 附validate.js中文api手册
Jul 31 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
Sep 15 Javascript
jQuery中delegate()方法用法实例
Jan 19 Javascript
Jquery对select的增、删、改、查操作
Feb 06 Javascript
AngularJS向后端ASP.NET API控制器上传文件
Feb 03 Javascript
模板视图和AngularJS之间冲突的解决方法
Nov 22 Javascript
使用JavaScript为一张图片设置备选路径的方法
Jan 04 Javascript
Swiper实现轮播图效果
Jul 03 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
Jan 25 Javascript
js拖动滑块和点击水波纹效果实例代码
Oct 16 Javascript
Vue extend的基本用法(实例详解)
Dec 09 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
Protoss兵种介绍
2020/03/14 星际争霸
短波问题解答
2021/02/28 无线电
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
php-app开发接口加密详解
2018/04/18 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
python写日志文件操作类与应用示例
2019/07/01 Python
Django之模板层的实现代码
2019/09/09 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
会计电算化专业毕业生自荐信
2013/12/20 职场文书
教师三严三实心得体会
2014/10/11 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
介绍信怎么写
2015/01/30 职场文书
项目建议书
2015/02/04 职场文书
酒店开业主持词
2015/07/02 职场文书