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原型继承的陷阱
Dec 03 Javascript
jQuery中[attribute=value]选择器用法实例
Dec 31 Javascript
jQuery中:submit选择器用法实例
Jan 03 Javascript
jquery实现可关闭的倒计时广告特效代码
Sep 02 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
Sep 21 Javascript
angular基于路由控制ui-router实现系统权限控制
Sep 27 Javascript
jQuery之动画效果大全
Nov 09 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
May 20 Javascript
vue中页面跳转拦截器的实现方法
Aug 23 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
Jan 27 Javascript
vue+element加入签名效果(移动端可用)
Jun 17 Javascript
js实现省级联动(数据结构优化)
Jul 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 面向对象 final类与final方法
2010/05/05 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
Json解析的方法小结
2016/06/22 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
Python设计密码强度校验程序
2020/07/30 Python
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
高中体育教学反思
2014/01/29 职场文书
初中语文教学反思
2014/02/02 职场文书
起诉书范文
2015/05/20 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js