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 相关文章推荐
Extjs学习笔记之一 初识Extjs之MessageBox
Jan 07 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
Nov 15 Javascript
JavaScript定义类的几种方式总结
Jan 06 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
Nov 10 Javascript
jQuery老黄历完整实现方法
Jan 16 Javascript
javascript中Date()函数在各浏览器中的显示效果
Jun 18 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
Aug 21 Javascript
plupload+artdialog实现多平台上传文件
Jul 19 Javascript
bootstrap快速制作后台界面
Dec 05 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
Oct 26 Javascript
Layui数据表格之获取表格中所有的数据方法
Aug 20 Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
PHP 函数语法介绍一
2009/06/14 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
JavaScript简介
2015/02/15 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
javascript基础知识讲解
2017/01/11 Javascript
javascript数据类型详解
2017/02/07 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
2017/02/18 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
用python解压分析jar包实例
2020/01/16 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
django的autoreload机制实现
2020/06/03 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
用python制作个视频下载器
2021/02/01 Python
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
擅自离岗检讨书
2014/02/11 职场文书
高一新生军训感言
2014/03/02 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书