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 相关文章推荐
[原创]网络复制内容时常用的正则+editplus
Nov 30 Javascript
如何实现动态删除javascript函数
May 27 Javascript
jQuery使用技巧简单汇总
Apr 18 Javascript
一个Action如何调用两个不同的方法
May 22 Javascript
jQuery中trigger()方法用法实例
Jan 19 Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 Javascript
充分发挥Node.js程序性能的一些方法介绍
Jun 23 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
Dec 02 Javascript
AngularJS实现根据不同条件显示不同控件
Apr 20 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
Sep 10 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Apr 20 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
Nov 05 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中常见的sql攻击正则表达式汇总
2014/11/06 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
JavaScript的Cookies
2008/01/16 Javascript
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
js日期时间补零的小例子
2013/03/05 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
django 自定义用户user模型的三种方法
2014/11/18 Python
Python统计单词出现的次数
2018/04/04 Python
python使用turtle库绘制时钟
2020/03/25 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
优秀毕业生求职推荐信范文
2013/11/21 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
JS封装cavans多种滤镜组件
2022/02/15 Javascript
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技