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替换table中的内容并显示进度条的代码
Aug 02 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
Jun 11 Javascript
jquery ztree实现树的搜索功能
Feb 25 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
Jul 05 Javascript
javascript 解决浏览器不支持的问题
Sep 24 Javascript
JavaScript 链式结构序列化详解
Sep 30 Javascript
javascript入门之window对象【新手必看】
Nov 22 Javascript
ES6新特性:使用export和import实现模块化详解
Jul 31 Javascript
极简主义法编写JavaScript类
Nov 02 Javascript
在 Vue.js中优雅地使用全局事件的方法
Feb 01 Javascript
jquery树形插件zTree高级使用详解
Aug 16 jQuery
javascript实现简易数码时钟
Mar 30 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+xml实现在线英文词典查询的方法
2015/01/23 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
PHP 实现重载
2021/03/09 PHP
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
实战node静态文件服务器的示例代码
2018/03/08 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
Python使用minidom读写xml的方法
2015/06/03 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
20行python代码实现人脸识别
2019/05/05 Python
Python API len函数操作过程解析
2020/03/05 Python
PyTorch的torch.cat用法
2020/06/28 Python
关于python中导入文件到list的问题
2020/10/31 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
servlet面试题
2012/08/20 面试题
厨房工作人员岗位职责
2013/11/15 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS