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 相关文章推荐
AlertBox 弹出层信息提示框效果实现步骤
Oct 11 Javascript
编写高效jQuery代码的4个原则和5个技巧
Apr 24 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
Sep 24 Javascript
jquery简单的弹出层浮动层代码
Apr 27 Javascript
JS使用parseInt解析数字实现求和的方法
Aug 05 Javascript
jQuery ajax应用总结
Jun 02 Javascript
Ionic如何创建APP项目
Jun 03 Javascript
vue制作加载更多功能的正确打开方式
Oct 12 Javascript
js数组操作方法总结(必看篇)
Nov 22 Javascript
jQuery事件blur()方法的使用实例讲解
Mar 30 jQuery
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
Mar 23 Javascript
详解ES6实现类的私有变量的几种写法
Feb 10 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实例
2013/12/24 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
学习JavaScript设计模式(封装)
2015/11/26 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
JavaScript实现区块链
2018/03/14 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
python简单程序读取串口信息的方法
2015/03/13 Python
python监控文件或目录变化
2016/06/07 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
酒店采购员岗位职责
2014/03/14 职场文书
研究生毕业自我鉴定范文
2014/03/27 职场文书
购房公证委托书(2014版)
2014/09/12 职场文书
给老婆的检讨书
2015/01/27 职场文书
写给导师的自荐信
2015/03/06 职场文书
单位综合评价意见
2015/06/05 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript