JavaScript闭包的简单应用


Posted in Javascript onSeptember 01, 2017

闭包定义

在JavaScript中,当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。简单说,闭包就是能够读取其他函数内部变量的函数。

闭包的作用:

1. 可以读取函数内部的变量
2. 让这些变量的值始终保持在内存中。
闭包简单应用

例一:

function a() { 
  var i = 0; 
 function b() {
  console.log(++i);
 } 
 return b;
}      
var c = a();  //执行完var c=a()后,变量c指向了函数b,再执行c()后就会显示i的值(为1)。
c();    //输出1

例二:

(function() { 
var i = 0; 
 return function(){
   console.log(++i);
  }
})()();     //输出1

例三:

(function(i) { 
 return function(){
   console.log(++i);
  }
})(0)();     //输出1

例四:

for (var i = 0; i < 3; i++) {
 setTimeout((function(i) {    
  return function() {
   console.log(i);
  };
 })(i), 2000);
 console.log(i+10);
}      //输出 10 11 12 (隔两秒后)0 1 2

例五:

for (var i = 0; i < 3; i++) {
 setTimeout((function(i) {
  return function() {
   console.log(i);
  };
 })(i)(), 2000);
 console.log(i+10);
}      //立即输出 0 10 1 11 2 12 ,(两秒后运行程序结束)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
浏览器解析js生成的html出现样式问题的解决方法
Apr 16 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
Aug 22 Javascript
ExtJs纵坐标值重复问题的解决方法
Feb 27 Javascript
php+js实现倒计时功能
Jun 02 Javascript
基于jQuery实现的QQ表情插件
Aug 25 Javascript
JS操作COOKIE实现备忘记录的方法
Apr 01 Javascript
jQuery基于json与cookie实现购物车的方法
Apr 15 Javascript
十分钟带你快速了解React16新特性
Nov 10 Javascript
对node.js中render和send的用法详解
May 14 Javascript
关于React动态加载路由处理的相关问题
Jan 07 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
Feb 03 Javascript
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
写给vue新手们的vue渲染页面教程
Sep 01 #Javascript
深入理解Vue 的条件渲染和列表渲染
Sep 01 #Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 #Javascript
JavaScript中数组常见操作技巧
Sep 01 #Javascript
js禁止浏览器页面后退功能的实例(推荐)
Sep 01 #Javascript
使用JS和canvas实现gif动图的停止和播放代码
Sep 01 #Javascript
关于Promise 异步编程的实例讲解
Sep 01 #Javascript
You might like
PHP脚本中include文件出错解决方法
2008/11/20 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
smarty模板引擎从php中获取数据的方法
2015/01/22 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
js简单时间比较的方法
2016/08/02 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
django 信号调度机制详解
2019/07/19 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
了解一下python内建模块collections
2020/09/07 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
给导游的表扬信
2014/01/10 职场文书
电大毕业个人生自我鉴定
2014/03/26 职场文书
校庆活动方案
2014/03/31 职场文书
班级出游活动计划书
2014/08/15 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
小学运动会报道稿
2015/07/22 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
Pandas自定义选项option设置
2021/07/25 Python
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers