山东网站建设SEO优化制作设计公司,生意参谋官网,简报格式模板,网站建设要注意那些问题for循环和闭包 今天记录for循环和闭包的使用#xff1a;for(var i 0 ; i lis.length ; i) {lis[i].onclickfunction(i){return function(){console.log(i)}}(i);
}
在for循环里面执行闭包的时候#xff0c;将循环体的代码储存在一个内存中#xff0c;对应的i值也储存在…for循环和闭包 今天记录for循环和闭包的使用for(var i 0 ; i lis.length ; i) {lis[i].onclickfunction(i){return function(){console.log(i)}}(i);
}
在for循环里面执行闭包的时候将循环体的代码储存在一个内存中对应的i值也储存在了内存中(闭包不销毁变量)。事件点击的时候是执行return之后的函数在执行的时候因为作用域的原因使用的是事件之后的函数中的i值这个i值在循环的时候已经储存为了对应的值因此一次事件执行取到的i值都不一样。 作用域的问题 var i 5;
function fn(){var i 2;return function(){console.log(i)i}
}
var f fn();f(); 2
f(); 3
fn()(); 2先找局部作用域中的局部没有找上级上级还没有就一直往上级找直到window(全局作用域)。闭包的扩展jQueryjquery本身就是一个大的闭包。
1.$(div) 获取的是一个集合但是这个集合中的每一项都可以执行对应的事件并且有自己的索引值。
理解当这个集合执行点击事件的时候形成了一个闭包这个闭包里面有一个变量对应着div的下标这个变量就是for循环时候对应的i值。 转载于:https://www.cnblogs.com/rainbow8590/p/7096191.html