JS中闭包的经典用法小结(2则示例)


Posted in Javascript onDecember 28, 2016

本文实例总结了JS中闭包的经典用法。分享给大家供大家参考,具体如下:

闭包这个东西,网上有很多介绍资料。个人看了很多,还是一知半解。这里不做理论介绍,直接给出2个例子。

代码1:记录函数被调用的次数

function a()
{
  var i = 0;
  function b()
  {
    return ++i;
  }
  return b;
}
var c = a();
c();//1
c();//2

这种方式类似C语言中的private static变量,能够保持局部变量的内存不释放。

代码2:正确给DOM注册事件处理函数

<body>
  <input type="button" id="b1" value="1">
  <input type="button" id="b2" value="2">
  <input type="button" id="b3" value="3">
  <input type="button" id="b4" value="4">
  <script type="text/javascript">
    var buttons = document.getElementsByTagName("input");
    for (var i = 0; i < buttons.length; i++)
    {
      // 方式1:i的值一直是3
      //buttons[i].onclick = function() {
      // console.log(i + " was clicked.");
      //}
      // 方式2:从0到3,是我们要的效果
      (function(i){
        buttons[i].onclick = function() {
          console.log(i + " was clicked.");
        }
      })(i);
    }
  </script>
</body>

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript入门教程 Cookies
Jan 31 Javascript
基于JQuery的cookie插件
Apr 07 Javascript
javascript 得到变量类型的函数
May 19 Javascript
3款实用的在线JS代码工具(国外)
Mar 15 Javascript
js+jquery实现图片裁剪功能
Jan 02 Javascript
JS取得绝对路径的实现代码
Jan 16 Javascript
cookie的secure属性详解
Apr 08 Javascript
JS实现仿QQ聊天窗口抖动特效
May 10 Javascript
微信小程序 闭包写法详细介绍
Dec 14 Javascript
vue-cli项目中使用Mockjs详解
May 14 Javascript
async/await优雅的错误处理方法总结
Jan 30 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
Nov 11 jQuery
AngularJS实现网站换肤实例
Feb 19 #Javascript
详解js树形控件—zTree使用总结
Dec 28 #Javascript
js 轮播效果实例分享
Dec 28 #Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
Dec 28 #Javascript
Bootstrap 模态框实例插件案例分析
Dec 28 #Javascript
Angular使用ng-messages与PHP进行表单数据验证
Dec 28 #Javascript
Bootstrap中datetimepicker使用小结
Dec 28 #Javascript
You might like
php str_pad() 将字符串填充成指定长度的字符串
2010/02/23 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
深入PHP curl参数的详解
2013/06/17 PHP
php 解压rar文件及zip文件的方法
2014/05/05 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
[02:33]2018 DOTA2亚洲邀请赛回顾视频 再次拾起那些美妙的时刻
2018/04/10 DOTA
Python之父谈Python的未来形式
2016/07/01 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
Python 中的lambda函数介绍
2018/10/10 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
日本无添加化妆品:HABA
2016/08/18 全球购物
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
安全生产责任书范本
2014/04/15 职场文书
村级个人对照检查材料
2014/08/22 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
人大代表选举标语
2014/10/07 职场文书
2014年班主任工作总结
2014/11/08 职场文书
2014年班组工作总结
2014/11/20 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
行政处罚决定书
2015/06/24 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript