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 相关文章推荐
网站被黑的假象--ARP欺骗之页面中加入一段js
May 16 Javascript
通用javascript脚本函数库 方便开发
Oct 13 Javascript
js常用排序实现代码
Dec 28 Javascript
通过javascript获取iframe里的值示例代码
Jun 24 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
Dec 19 Javascript
JQuery核心函数是什么及使用方法介绍
May 03 Javascript
JS查找数组中重复元素的方法详解
Jun 14 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
Jul 25 Javascript
简单谈谈React中的路由系统
Jul 25 Javascript
JS实现前端缓存的方法
Sep 21 Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
Apr 30 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 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
php按单词截取字符串的方法
2015/04/07 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
Javascript的闭包详解
2014/12/26 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
Python设计模式之MVC模式简单示例
2018/01/10 Python
Python数据结构之图的应用示例
2018/05/11 Python
一看就懂得Python的math模块
2018/10/21 Python
python集合是否可变总结
2019/06/20 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
Android面试题附答案
2014/12/08 面试题
创立科技Java面试题
2015/11/29 面试题
楼面经理岗位职责范本
2014/02/18 职场文书
元旦联欢会主持词
2014/03/26 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS