永发信息网

什么情况下才会使用闭包?javascript

答案:2  悬赏:60  手机版
解决时间 2021-02-15 02:49
你们项目中什么情况下会用到闭包呢??
麻烦不要把闭包原理这些复制粘贴进来哈,谢谢,我只是想知道你们在项目中什么情况下会用到闭包就行来了
最佳答案
只要一个作用域通过某种手段持有了另一个作用域声明的变量或成员(也即存在未销毁的局部变量),这个变量或成员就叫做“闭包”。

用到的情况太多了,JS 对闭包的支持本来就算是它的一个语言特性,随便写写就会出现闭包,你自己写的代码里就会大量的出现闭包(不管你意识没意识到)。
还是举一例吧,拿著名的 jQuery 举例子:
Sizzle.selectors = { 
  match: matchExpr, 
  filter: { 
    "ID": function( id ) { 
      var attrId = id; 
      return function( elem ) { 
        return elem.id == attrId;
      };
    }, 
    "TAG": function( nodeNameSelector ) { 
      var nodeName = nodeNameSelector; 
      return nodeNameSelector === "*" ? 
      function() { return true; } : 
      function( elem ) { 
        return elem.tagName && elem.tagName === nodeName; 
      }; 
    }
  }
}这种 jQuery 源码中选择器的一段代码(太长未粘全),里面 attrId、nodeName 两个局部变量就是闭包。
全部回答
闭包的使用是为保持对某一作用域访问的。 节点onclick 事件触发时 执行function(e){alert(i);}。i指向function(nodes){}函数作用域里面的i。 事件是在 节点绑定函数之后才触发的。这时,i已经循环到nodes.length。i的值就是nodes.length。 为了避免这种情况的发生。 var add = function(nodes){ var i; for(i=0; i< nodes.length; i+=1){ (function(e){ var that=i; nodes[that].onclick =function(){ alert(that); }; })(i); } }; 直接执行函数 将 i 绑定到事件上。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
嘉润大酒店地址在什么地方,想过去办事
windows7怎么直接出现输入密码界面而不用先点
葫芦岛TREK专卖店地址在什么地方,想过去办事
八岁的人做什么菜最适合
内蒙古地域辽阔,各地区生活习俗同中有异,因
广建一幢我想知道这个在什么地方
葫芦岛市龙港区喜德盛专卖店地址在什么地方,
北上广依然相信爱情大头妈妈是谁扮演的
一个30岁的高中生从电子厂普工做起,有前途吗
【梵提冈】故宫与梵提冈哪个面积大?
Trek(崔克)葫芦岛专卖店怎么去啊,我要去那办
古玩店怎么去啊,有知道地址的么
Merida(美利达)葫芦岛兴城专卖店地址在什么地
Giant(捷安特)葫芦岛市专卖店怎么去啊,我要
木炭如何快速被点燃?
推荐资讯
诚丰手机连锁华联店地址在什么地方,想过去办
瓮福宾馆地址在什么地方,我要处理点事
一吵架,老公总要离婚
西部新区幼儿园地址好找么,我有些事要过去
我怎么感觉英文歌节奏快的词都给省略了?
世纪港湾停车场(出入口)(新世纪环岛与秦皇东
童星0370街舞地址在哪,我要去那里办事
可以在国外购物网站开店吗?
阿基米德在洗澡中悟出了浮力原理,牛顿从苹果
HTML5 真能代替 Flash 吗
k5221次列车座位表3车20d是什么意思
石膏制品具有较好的防火功能,其原因是()。A.
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?