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使用activex控件的代码
Jan 27 Javascript
深入理解JavaScript系列(13) This? Yes,this!
Jan 18 Javascript
IE下JS读取xml文件示例代码
Aug 05 Javascript
js 动态加载事件的几种方法总结
Dec 25 Javascript
基于javascript实现的搜索时自动提示功能
Dec 26 Javascript
javascript中html字符串转化为jquery dom对象的方法
Aug 27 Javascript
AngularJS基础 ng-copy 指令实例代码
Aug 01 Javascript
js中offset,client , scroll 三大元素知识点总结
Sep 11 Javascript
jquery将json转为数据字典的实例代码
Oct 11 jQuery
vue+webpack dev本地调试全局样式引用失效的解决方案
Nov 12 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
Jul 21 Javascript
Vue路由权限控制解析
Nov 09 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
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
PHP设置进度条的方法
2015/07/08 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
web css实现整站样式互相切换
2013/10/29 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
python中的数据结构比较
2019/05/13 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
大学生毕业求职的自我评价
2013/09/29 职场文书
老公给老婆的道歉信
2014/01/10 职场文书
大学生优秀团员事迹材料
2014/01/30 职场文书
学生请假条格式
2014/04/11 职场文书
工业设计专业自荐书
2014/06/05 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
滴水洞导游词
2015/02/10 职场文书
自主招生自荐信格式
2015/03/04 职场文书
道德与公民自我评价
2015/03/09 职场文书
养成教育工作总结
2015/08/13 职场文书
高一数学教学反思
2016/02/18 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
高中化学教学反思
2016/02/22 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang
python pygame入门教程
2021/06/01 Python
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python