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 相关文章推荐
Jquery中增加参数与Json转换代码
Nov 20 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
Jan 02 Javascript
JS实现淘宝幻灯片效果的实现方法
Mar 22 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
Jul 18 Javascript
基于jQuery实现网页进度显示插件
Mar 04 Javascript
jQuery实现伪分页的方法分享
Feb 17 Javascript
深入理解JavaScript定时机制
Oct 27 Javascript
swiper动态改变滑动内容的实现方法
Jan 17 Javascript
js canvas实现写字动画效果
Nov 30 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
Jun 11 Javascript
浅析TypeScript 命名空间
Mar 19 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
Apr 29 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+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
php获取指定范围内最接近数的方法
2015/06/02 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
js 链式延迟执行DOME
2012/01/04 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
TensorFlow变量管理详解
2018/03/10 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
Python读写文件基础知识点
2019/06/10 Python
python字典setdefault方法和get方法使用实例
2019/12/25 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
机电专业大学生求职信
2013/10/04 职场文书
一年级语文教学反思
2014/02/13 职场文书
优秀员工推荐材料
2014/12/20 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
python可视化之颜色映射详解
2021/09/15 Python