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 相关文章推荐
javascript parseInt 函数分析(转)
Mar 21 Javascript
基于Jquery的简单&amp;简陋Tabs插件代码
Feb 09 Javascript
javascript URL编码和解码使用说明
Apr 12 Javascript
Javascript原型链和原型的一个误区
Oct 22 Javascript
JS中三目运算符和if else的区别分析与示例
Nov 21 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
Nov 27 Javascript
浅析AngularJS中的指令
Mar 20 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
Vue.js开发环境搭建
Nov 10 Javascript
js实现百度登录框鼠标拖拽效果
Mar 07 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
Apr 20 Javascript
ES6入门教程之变量的解构赋值详解
Apr 13 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获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
php类常量的使用详解
2013/06/08 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
javascript+xml技术实现分页浏览
2008/07/27 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
js变量提升深入理解
2016/09/16 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
2018/08/09 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
python的flask框架难学吗
2020/07/31 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
顶岗实习接收函
2014/01/09 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
小学大队长竞选稿
2015/11/20 职场文书
利用Redis实现点赞功能的示例代码
2022/06/28 Redis