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中创建对象的三种常用方法
Dec 30 Javascript
js正文内容高亮效果的实现方法
Jun 30 Javascript
JQuery判断HTML元素是否存在的两种解决方法
Dec 26 Javascript
JavaScript Sort 的一个错误用法示例
Mar 20 Javascript
javascript限制文本框输入值类型的方法
May 07 Javascript
jQuery实现的简单分页示例
Jun 01 Javascript
Vue.js组件tree实现无限级树形菜单
Dec 02 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 Javascript
js 只比较时间大小的实例
Oct 26 Javascript
vue和webpack打包项目相对路径修改的方法
Jun 15 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
node实现简单的增删改查接口实例代码
Aug 22 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
php中的静态变量的基本用法
2014/03/20 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
php简单图像创建入门实例
2015/06/10 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python三级菜单的实例
2017/09/13 Python
python列表list保留顺序去重的实例
2018/12/14 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
职业规划书如何设计?
2014/01/09 职场文书
班级标语大全
2014/06/21 职场文书
社区文艺活动方案
2014/08/19 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript