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 相关文章推荐
js移除事件 js绑定事件实例应用
Nov 28 Javascript
Json和Jsonp理论实例代码详解
Nov 15 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
Dec 18 Javascript
Javascript selection的兼容性写法介绍
Dec 20 Javascript
js写的方法实现上传图片之后查看大图
Mar 05 Javascript
js改变鼠标的形状和样式的方法
Mar 31 Javascript
BootStrap 弹出层代码
Feb 09 Javascript
vue.js 上传图片实例代码
Jun 22 Javascript
Bootstrap Table快速完美搭建后台管理系统
Sep 20 Javascript
mockjs+vue页面直接展示数据的方法
Dec 19 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
Feb 19 Javascript
layui 对弹窗 form表单赋值的实现方法
Sep 04 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为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
设定php简写功能的方法
2019/11/28 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
Python中使用多进程来实现并行处理的方法小结
2017/08/09 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
简单了解django缓存方式及配置
2019/07/19 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
python 带时区的日期格式化操作
2020/10/23 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
《哪吒闹海》教学反思
2014/02/28 职场文书
表决心的诗句大全
2014/03/11 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
爱情保证书大全
2014/04/29 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
团员个人年度总结
2015/02/26 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis