当前位置: 首页 > news >正文

新西兰注册公司做网站晏阳初乡村建设网站

新西兰注册公司做网站,晏阳初乡村建设网站,页面设计模板网站,三河seo本文也同步发表在我的公众号“我的天空” 上一期我们已经介绍了闭包#xff0c;由于闭包可以延长函数内部的变量的生存周期#xff0c;因此我们可以将不需要暴露在全局的变量封装成函数的内部变量#xff0c;从而避免代码污染。 譬如要实现一个简单的累加器#xff0c;为了…本文也同步发表在我的公众号“我的天空” 上一期我们已经介绍了闭包由于闭包可以延长函数内部的变量的生存周期因此我们可以将不需要暴露在全局的变量封装成函数的内部变量从而避免代码污染。 譬如要实现一个简单的累加器为了保存每次累加的结果因此声明了一个全局变量total代码如下 var total0;function add(t){    total t;    alert(total);}total2;add(3);        //显示5add(5);        //显示10add(1);        //显示11 但是在实际开发中应尽量避免全局变量因为全局变量可以在代码的任何地方被调用假设在其他地方不小心更改了total的值的话我们这个累加器就会出问题了。由于total值是只供函数add()使用的因此希望total能被封闭在函数add()的内部这样就无法从外部来改写它了我们使用闭包来实现代码如下 function add(s){    var totals;    return function(t){        total t;        alert(total);    }}var aadd(2);a(3);        //显示5a(5);        //显示10a(1);        //显示11 通过闭包将变量total封闭在函数add()中外部无法访问到这样就避免了被其他代码随意改写的可能性。 由于闭包会将封闭在函数内部的局部变量赋予类似于全局变量的效果因此在有些场景下需要特别注意尤其是涉及到循环遍历来看以下代码 function createArray(){    var resultnew Array();    for (var i0;i3;i ){        result[i]function(){            return i;        }    }} 这是一个创建数组数组的函数从表面上看每个函数应该都返回自己的索引值因此创建的数组中每个元素应该包含如下函数 result[0]function(){return 0}result[1]function(){return 1}result[2]function(){return 2} 但是实际上数组中的每个元素只是包含function(){return i},也就是说当该函数执行完毕后返回的是这样一个数组 {    function(){return i},    function(){return i},    function(){return i}} 而变量i由于存在于一个返回函数中形成了闭包所以当createArray()执行完毕后其执行环境不会被销毁变量i得以保留并且其值为3这点很重要。 因此当我们使用createArray()来创建数组时得到的效果就不是我们的预期弹出的都为“3” var acreateArray();for(var z0;za.length;z ){    alert(a[z]());    //均显示为3} 实际上该代码无非就是重复执行三遍以下代码 alert(function(){return 3}()); 那么为了达到我们的预期应该将createArray()函数做如下修改 function createArray(){    var resultnew Array();    for (var i0;i3;i ){        result[i]function(z){            return function(){                return z;            };        }(i)    }} 分析以上代码我们将一个自执行函数返回给了数组元素在赋值的时候变量z就是在赋值的那个时刻的i值那么返回的数组中的元素便包含我们预期的函数 result[0]function(){return 0}result[1]function(){return 1}result[2]function(){return 2} 再一次执行以下代码显示就正常了 var acreateArray();for(var z0;za.length;z ){    alert(a[z]());    //依次显示0、1、2} 一定要注意的是我们是把一个函数赋予了数组中的元素而不是单个的值。因为在实际的应用中返回函数的话我们就可以在函数内做更多的事情。 看以下的实现html有四个p标签和4个div标签当单击div标签时相应的p标签更改颜色请注意这是一个面试中非常容易遇到的题目代码如下 body  pp1/ppp2/ppp3/ppp4/p  divdiv1/divdivdiv2/divdivdiv3/divdivdiv4/div   /body  script     var ddocument.getElementsByTagName(div);       for(var i0;id.length;i ){         d[i].οnclickfunction(num){             return function(){                document.getElementsByTagName(p)[num].style.colorred;             };         }(i);       } /script 如果直接写成以下代码的话那么无论你单击哪个div程序总是会报错因为此时i的值为4所以document.getElementsByTagName(p)[4]这个元素并不存在导致引用错误。 for(var i0;id.length;i ){        d[i].οnclickfunction(){          document.getElementsByTagName(p)[i].style.colorred;      };   } 最后我们要注意的是当需要返回函数内部的多个变量时便不能采用返回匿名函数的方式了可以采用以下的形式 function setpepole(){    var name李四;        var age31;    return {        getname:funcion(){            return name;            },        getage:function(){            return age;        }    } }var asetpepole();alert(a.getname());     //显示“李四”alert(a.getage());      //显示31 闭包系列就到此全部结束了 更多专业前端知识请上 【猿2048】www.mk2048.com
http://wiki.neutronadmin.com/news/358582/

相关文章:

  • 做电子烟外贸网站有哪些中国机械加工网制造
  • 企业网站合同书店网站规划与建设
  • 许昌网站开发哪家好网站防止攻击
  • 网站数据分析课程滑县网站建设价格
  • seo网站结构东莞财务公司代注册公司
  • 网站开发价格报表模板蚌埠市建设学校网站
  • 乐山市做网站的公司wordpress站标
  • asp网站变成php网站哪个服务器好
  • 公司营业执照注册长春seo代理
  • 盐城做网站哪家公司好做网站都要学什么
  • 航空港建设局网站app手机软件开发
  • 网站建设行业咨讯文章关键词排名推广公司
  • 网站文章多久才收录连云港网站建设wang
  • 杭州网站设计公司链接分析属于网站开发
  • 网站服务器ip中国优秀企业网站欣赏
  • 莱芜金点子网站上海市企业服务云平台
  • 网站被黑客入侵怎么办工作时做网站使用软件
  • linux做网站优势建网站公司哪里好
  • WordPress主题站外贸开发产品网站建设
  • 淘宝客网站模板购买手机排行榜2021前十名性价比
  • 微信支付 网站备案如何设计一个实验方案
  • 网站建设方案选择实现方式做微信的网站叫什么米
  • 大庆城市建设投资网站怎么做国际货运代理外贸网站
  • wordpress建设的网站软件开发培训难学吗
  • 网站的建设参考文献西安网站制作机构
  • 环保网站建设模板免费下载天元建设集团有限公司申请破产
  • 莱芜网站优化怎么做兰州网站建设设计
  • 各大网站图片用ai怎么做网站
  • 银川网站设计建设做运营必知网站
  • 桥的设计网站建设做app网站的公司名称