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 相关文章推荐
事件绑定之小测试  onclick &amp;&amp; addEventListener
Jul 31 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
Jan 11 Javascript
使用js画图之饼图
Jan 12 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
Jan 12 Javascript
原生js实现轮播图的示例代码
Feb 20 Javascript
Angularjs的键盘事件的绑定
Jul 27 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
Sep 11 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 jQuery
Windows下支持自动更新的Electron应用脚手架的方法
Dec 24 Javascript
layui--js控制switch的切换方法
Sep 03 Javascript
JS数组的高级使用方法示例小结
Mar 14 Javascript
vue-simple-uploader上传成功之后的response获取代码
Sep 07 Javascript
写给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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
使用python统计文件行数示例分享
2014/02/21 Python
python实现telnet客户端的方法
2015/04/15 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
学习经验交流会主持词
2014/04/01 职场文书
中介业务员岗位职责
2014/04/09 职场文书
大学新生入学教育方案
2014/05/16 职场文书
设备收款委托书范本
2014/10/02 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
英语感谢信范文
2015/01/20 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
创业计划书之废品回收
2019/09/26 职场文书