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 封装Ajax传递的数据代码
Jun 05 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
Feb 11 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
Nov 19 Javascript
JS两种定义方式的区别、内部原理
Nov 21 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
Feb 11 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
Aug 21 Javascript
Bootstrap每天必学之进度条
Nov 30 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
Jun 16 Javascript
详解Angular CLI + Electron 开发环境搭建
Jul 20 Javascript
简单分析js中的this的原理
Aug 31 Javascript
构建Vue大型应用的10个最佳实践(小结)
Nov 07 Javascript
微信小程序修改数组长度的问题的解决
Dec 17 Javascript
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生成便于打印的网页
2006/10/09 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
Python中处理时间的几种方法小结
2015/04/09 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
python分数表示方式和写法
2019/06/26 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
暑期社会实践学生的自我评价
2014/01/09 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
婚内房产协议书范本
2014/10/02 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
个人专业技术总结
2015/03/05 职场文书
加薪申请报告范本
2015/05/15 职场文书