代码改变世界

JS 闭包

  空逸云  阅读(445)  评论(12编辑  收藏  举报

很多时候.需要在循环的时候绑定元素事件.但实际上由于JS的机制问题,你绑定的代码是等到了你触发了事件时才引发.那么你的循环早就完成了.此时的调用肯定不是你想要的结果.

例如 

 


for (var i = 0; i < items.length; i++) {
      
var item = $("<li ><a>" + i+ "</a></li>");
      item.bind(
"click"function(){ dosometion(i) ;});
      wIngreList.append(item);
 }

 

 

 可以百分百肯定.结果肯定不是你要.此时的i不再是你所需要的.而是items.length.那么怎么办呢?闭包可以完成我们想要的

定义一个闭包的"类" 


 

复制代码

var closeFunc = function(i) {
            
return function() {
                dosomething(
this, i);
               
//此Function等到事件触发时才执行,假如是click,那么this就是触发click的元素
            }
        }
复制代码

 

 

 利用这个闭包类.就可以得到我们所想要的结果

 


item.bind(
"click"new closerFunc(items[i]));

 

 OK .大功告成!

  

 

 

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示