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 相关文章推荐
jqeury eval将字符串转换json的方法
Jan 20 Javascript
jQuery动画效果实现图片无缝连续滚动
Jan 12 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
Aug 19 Javascript
JQuery遍历元素的父辈和祖先的方法
Sep 18 Javascript
Javascript数组循环遍历之forEach详解
Nov 07 Javascript
基于JavaScript实现拖动滑块效果
Feb 16 Javascript
js 去掉字符串前后空格实现代码集合
Mar 25 Javascript
详解vue添加删除元素的方法
Jun 30 Javascript
基于Vue实现可以拖拽的树形表格实例详解
Oct 18 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
Nov 29 Javascript
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
JS实现数组去重的11种方法总结
Apr 04 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获取Google AJAX Search API 数据的代码
2010/03/12 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
基于js中的原型、继承的一些想法
2016/08/10 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
JavaScript实现创建自定义对象的常用方式总结
2018/07/09 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
python文件和目录操作函数小结
2014/07/11 Python
Windows系统配置python脚本开机启动的3种方法分享
2015/03/10 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
Python PO设计模式的具体使用
2019/08/16 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
营销人才自我鉴定范文
2013/12/25 职场文书
秋游活动策划方案
2014/02/16 职场文书
广告学专业自荐信范文
2014/02/24 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
护理专科学生自荐书
2014/07/05 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android