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 JSQL,SQL无处不在,
May 05 Javascript
js onload事件不起作用示例分析
Oct 09 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
Mar 25 Javascript
jquery插件orbit.js实现图片折叠轮换特效
Apr 14 Javascript
JavaScript Split()方法
Dec 18 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
Jan 03 Javascript
整理关于Bootstrap排版的慕课笔记
Mar 29 Javascript
JavaScript表单即时验证 验证不成功不能提交
Aug 31 Javascript
AngularJS中重新加载当前路由页面的方法
Mar 09 Javascript
了解重排与重绘
May 29 Javascript
如何在项目中使用log4.js的方法步骤
Jul 16 Javascript
JS apply用法总结和使用场景实例分析
Mar 14 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 不同编码下的字符串长度区分
2009/09/26 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
用PHP实现Ftp用户的在线管理
2012/02/16 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
javascript 操作符(~、&amp;、|、^、)使用案例
2014/12/31 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
python判断端口是否打开的实现代码
2013/02/10 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
Python 专题一 函数的基础知识
2017/03/16 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
Python中存取文件的4种不同操作
2018/07/02 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
Servlet方面面试题
2016/09/28 面试题
满月酒答谢词
2014/01/14 职场文书
办公室综合文员岗位职责范本
2014/02/13 职场文书
舞蹈毕业生的自我评价
2014/03/05 职场文书
小学见习报告
2014/10/31 职场文书
优秀班主任申报材料
2014/12/16 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
Python实现日志实时监测的示例详解
2022/04/06 Python