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高级程序设计 DOM学习笔记
Sep 10 Javascript
js实现简单的星级选择器提交效果适用于评论等
Oct 18 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
May 04 Javascript
jQuery中add()方法用法实例
Jan 08 Javascript
动态加载js、css的简单实现代码
May 26 Javascript
遍历js中对象的属性和值的实例
Nov 21 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 jQuery
jquery实现动态改变css样式的方法分析
May 27 jQuery
VUE实时监听元素距离顶部高度的操作
Jul 29 Javascript
PHP 502bad gateway原因及解决方案
Nov 13 Javascript
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
javascript条件式访问属性和箭头函数介绍
Nov 17 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+ACCESS 文章管理程序代码
2010/06/21 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
接收键盘指令的脚本
2006/06/26 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
Bootstrap 树控件使用经验分享(图文解说)
2017/11/06 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
2020/07/21 Javascript
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
Python常见数据类型转换操作示例
2019/05/08 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
python 并发下载器实现方法示例
2019/11/22 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
城市规划应届毕业生自荐信
2014/07/04 职场文书
授权委托书格式范文
2014/08/02 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
领导干部考核评语
2015/01/04 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
电力安全教育培训心得体会
2016/01/11 职场文书
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android