全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

javascript闭包功能与用法实例分析

本文实例讲述了javascript闭包功能与用法。分享给大家供大家参考,具体如下:

理解闭包

闭包这个东西,确实是很麻烦。之前我自己的理解也是有一点误差,所以今天将文章修改修改,争取将自己的理解进一步准确化。

闭包说得通熟易懂一点,就是指有权访问另一个函数作用域的变量的函数。创建闭包的常见方式,就是在一个函数内部创建另外一个函数,并返回

我们这里举一个例子来说明,首先我们在函数f1内部定义一个函数f2。

function f1(){
  var n=999;
  function f2(){
    alert(n); // 999
  }
}

f2可以访问f1的作用域,反过来就不行了。现在我们想访问f1中的n,在外层却访问不到,怎么办呢?将f2作为f1的返回值就可以了:

function f1(){
  var n=999;
  function f2(){
    alert(n);
  }
  return f2;
}
var result=f1();
result(); // 999

这个就是闭包。

其实也很简单,那么闭包有什么用呢?

闭包的使用

之前的自己只知道闭包的概念,却并不知道其存在的价值和意义。直到自己在项目中遇到类似的问题后,才发现只有闭包才能解决的情况。

闭包是使用可以带来以下好处

1. 希望一个变量长期驻扎在内存中
2. 避免全局变量的污染
3. 私有成员的存在

我们刚才说到过,闭包可以读取到函数内部的变量,这是由于闭包后函数的堆栈不会释放,也就是说这些值始终保持在内存中。这是一个优点,也是一个缺点。

我们可以通过闭包来实现一个计数器,而不用担心全局变量的污染:

function f1(){
  var n=999;
  nAdd=function(){n+=1}
  function f2(){
    alert(n);
  }
  return f2;
}
var result=f1();
result(); // 999
nAdd();
result(); // 1000

可以看到n一直存储在内存中,并没有在f1调用后被自动清除。

我们再来看看如何通过闭包来模拟JavaScript中的私有成员:

var aaa = (function(){
  var a = 1;
  function bbb(){
    a++;
    alert(a);
  }
  function ccc(){
    a++;
    alert(a);
  }
  return {
    b:bbb,    //json结构
    c:ccc
  }
})();
aaa.b();  //2
aaa.c();  //3

这样就可以提供指定的变量供外界访问了。

闭包解决的问题

这是一个很常见的问题,就是利用javascript处理循环的时候,索引i的值不能有效的利用:

这里改成如下格式,形成10个闭包来解决即可:

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


# javascript  # 闭包  # 通俗易懂地解释JS中的闭包  # JS继承与闭包及JS实现继承的三种方式  # 浅谈JavaScript作用域和闭包  # JS闭包的几种常见形式实例详解  # JS实现闭包中的沙箱模式示例  # JavaScript闭包的简单应用  # 通过示例彻底搞懂js闭包  # JavaScript闭包和回调详解  # 浅谈JS封闭函数、闭包、内置对象  # JavaScript闭包_动力节点Java学院整理  # 深入理解Javascript中的作用域链和闭包  # JS闭包可被利用的常见场景小结  # 利用js的闭包原理做对象封装及调用方法  # JavaScript中闭包的详解  # JS闭包用法实例分析  # 图解Javascript——作用域、作用域链、闭包  # 轻松理解JavaScript闭包  # js中的闭包学习心得  # 自己的  # 这是一个  # 一个函数  # 就可以  # 这是  # 全局变量  # 相关内容  # 遍历  # 说到  # 我们可以  # 数据结构  # 也很  # 给大家  # 才发现  # 说得  # 再来  # 可以看到  # 只知道  # 不行了  # 更多关于 


相关文章: 网站制作费用多少钱,一个网站的运营,需要哪些费用?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  利用JavaScript实现拖拽改变元素大小  如何选择最佳自助建站系统?快速指南解析优劣  济南网站制作的价格,历城一职专官方网站?  建站之星导航如何优化提升用户体验?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何通过山东自助建站平台快速注册域名?  网站制作模板下载什么软件,ppt模板免费下载网站?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  孙琪峥织梦建站教程如何优化数据库安全?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  无锡营销型网站制作公司,无锡网选车牌流程?  宝塔新建站点报错如何解决?  如何配置WinSCP新建站点的密钥验证步骤?  宝塔面板创建网站无法访问?如何快速排查修复?  SQL查询语句优化的实用方法总结  如何快速搭建自助建站会员专属系统?  清除minerd进程的简单方法  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  ,有什么在线背英语单词效率比较高的网站?  北京网站制作的公司有哪些,北京白云观官方网站?  建站主机选购指南:核心配置与性价比推荐解析  seo网站制作优化,网站SEO优化步骤有哪些?  建站之星如何通过成品分离优化网站效率?  如何注册花生壳免费域名并搭建个人网站?  建站主机选购指南:核心配置优化与品牌推荐方案  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  建站VPS能否同时实现高效与安全翻墙?  如何在IIS中新建站点并配置端口与IP地址?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  建站主机SSH密钥生成步骤及常见问题解答?  如何快速搭建虚拟主机网站?新手必看指南  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何在IIS7中新建站点?详细步骤解析  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  建站之星安装路径如何正确选择及配置?  建站之星如何开启自定义404页面避免用户流失?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  宝塔新建站点为何无法访问?如何排查?  C#怎么创建控制台应用 C# Console App项目创建方法  制作旅游网站html,怎样注册旅游网站?  如何用狗爹虚拟主机快速搭建网站?  如何选择高效可靠的多用户建站源码资源? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。