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 相关文章推荐
经常用到的JavasScript事件的翻译
Apr 09 Javascript
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
Sep 09 Javascript
基于jquery的图片的切换(以数字的形式)
Feb 14 Javascript
JQuery.Ajax之错误调试帮助信息介绍
Jul 04 Javascript
易操作的jQuery表单提示插件
Dec 01 Javascript
D3.js实现文本的换行详解
Oct 14 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
Nov 29 Javascript
Vue.js实现简单ToDoList 前期准备(一)
Dec 01 Javascript
Javascript中数组去重与拍平的方法示例
Feb 03 Javascript
javascript+jQuery实现360开机时间显示效果
Nov 03 jQuery
vue router动态路由下让每个子路由都是独立组件的解决方案
Apr 24 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 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
一个捕获函数输出的函数
2007/02/14 PHP
javascript 打印页面代码
2009/03/24 Javascript
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
JS中的BOM应用
2018/02/02 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
Vue axios获取token临时令牌封装案例
2020/09/11 Javascript
python爬取网站数据保存使用的方法
2013/11/20 Python
python中正则表达式的使用详解
2014/10/17 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
python字符串中匹配数字的正则表达式
2019/07/03 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
波兰在线体育用品商店:Hop-Sport.pl
2019/07/23 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
GWT的应用有哪两种部署模式
2012/12/21 面试题
高三地理教学反思
2014/01/11 职场文书
火车的故事教学反思
2014/02/11 职场文书
幼儿园中秋节活动反思
2014/02/16 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
大学活动总结范文
2014/04/29 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
公司门卫工作职责
2014/06/28 职场文书
信息合作协议书
2014/10/09 职场文书
运动会广播稿300字
2015/08/19 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python