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 时间函数getYear()的使用问题探讨
Apr 01 Javascript
javascript变量声明实例分析
Apr 25 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
May 05 Javascript
Bootstrap3 Grid system原理及应用详解
Sep 30 Javascript
javascript 面向对象function详解及实例代码
Feb 28 Javascript
详解Webpack实战之构建 Electron 应用
Dec 25 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
Jun 26 Javascript
vue中的适配px2rem示例代码
Nov 19 Javascript
JavaScript学习笔记之图片库案例分析
Jan 08 Javascript
JavaScript 判断iPhone X Series机型的方法
Jan 28 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
Mar 28 Javascript
vue-property-decorator用法详解
Dec 12 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+DBM的同学录程序(2)
2006/10/09 PHP
PHP图片上传类带图片显示
2006/11/25 PHP
关于Intype一些小问题的解决办法
2008/03/28 PHP
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
Laravel5.7 Eloquent ORM快速入门详解
2019/04/12 PHP
jQuery 使用手册(三)
2009/09/23 Javascript
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
2010/03/07 Javascript
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Python中几个比较常见的名词解释
2015/07/04 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
postman和python mock测试过程图解
2020/02/22 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
2014年商场工作总结
2014/11/22 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
2014年个人总结范文
2015/03/09 职场文书
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记