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 相关文章推荐
如何在标题栏显示框架内页面的标题
Feb 03 Javascript
JScript中的undefined和&quot;undefined&quot;的区别
Mar 08 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
Aug 18 Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 Javascript
AngularJS延迟加载html template
Jul 27 Javascript
jQuery Validate设置onkeyup验证的实例代码
Dec 09 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
Oct 18 Javascript
es6 symbol的实现方法示例
Apr 02 Javascript
微信小程序云开发修改云数据库中的数据方法
May 18 Javascript
javascript数组元素删除方法delete和splice解析
Dec 09 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 Javascript
关于vue-cli3打包代码后白屏的解决方案
Sep 02 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 Streams(流)详细介绍及使用
2015/05/12 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
PHP简单遍历对象示例
2016/09/28 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
JQuery与iframe交互实现代码
2009/12/24 Javascript
chrome原生方法之数组
2011/11/30 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
Python中AND、OR的一个使用小技巧
2015/02/18 Python
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
python中pivot()函数基础知识点
2021/01/03 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
高二物理教学反思
2014/02/08 职场文书
商业融资计划书
2014/04/29 职场文书
社区娱乐活动方案
2014/08/21 职场文书
作风建设年度心得体会
2014/10/29 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
对公司的意见和建议
2015/06/04 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python