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基本概念初级讲解论坛贴的学习记录
Feb 22 Javascript
基于Jquery的淡入淡出的特效基础练习
Dec 13 Javascript
Javascript 面试题随笔
Mar 31 Javascript
jQuery实现下拉框左右选择的简单实例
Feb 22 Javascript
file控件选择上传文件确定后触发的js事件是哪个
Mar 17 Javascript
浅谈类似于(function(){}).call()的js语句
Mar 30 Javascript
jquery遍历函数siblings()用法实例
Dec 24 Javascript
JavaScript面向对象之私有静态变量实例分析
Jan 14 Javascript
学习javascript文件加载优化
Feb 19 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
Jul 26 Javascript
在点击div中的p时,如何阻止事件冒泡
Feb 07 Javascript
利用Node.js编写跨平台的spawn语句详解
Feb 12 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
apache mysql php 源码编译使用方法
2012/05/03 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
js脚本实现数据去重
2014/11/27 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
Python易忽视知识点小结
2015/05/25 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python跳出多重循环的方法示例
2019/07/03 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
大学生实习感言
2014/01/16 职场文书
食品业务员岗位职责
2014/03/18 职场文书
青奥会口号
2014/06/12 职场文书
支部书记四风对照材料
2014/08/28 职场文书
学生退学证明
2015/06/23 职场文书
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python