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页面跳转的问题(跳转到父页面、最外层页面、本页面)
Aug 14 Javascript
jquery中event对象属性与方法小结
Dec 18 Javascript
FireBug 调试JS入门教程 如何调试JS
Dec 23 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
Jun 03 Javascript
JS全局变量和局部变量最新解析
Jun 24 Javascript
基于JavaScript实现自动更新倒计时效果
Dec 19 Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 Javascript
利用hasOwnProperty给数组去重的面试题分享
Nov 05 Javascript
vue-router懒加载速度缓慢问题及解决方法
Nov 25 Javascript
Vue代码整洁之去重方法整理
Aug 06 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
vue element table中自定义一些input的验证操作
Jul 18 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学习 计数器实例代码
2008/06/15 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
原生js实现日期联动
2015/01/12 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
2018/05/15 NodeJs
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
Python计算三角函数之asin()方法的使用
2015/05/15 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
python表格存取的方法
2018/03/07 Python
python远程连接MySQL数据库
2019/04/19 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
详解css3 flex弹性盒自动铺满写法
2020/09/17 HTML / CSS
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
自我鉴定的范文
2013/10/03 职场文书
应届护士求职信范文
2014/01/26 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
安全横幅标语
2014/06/09 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫