初识js中的闭包

Posted viof7852

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识js中的闭包相关的知识,希望对你有一定的参考价值。

原文链接:http://www.cnblogs.com/pssp/p/5189345.html

下面我来说一个闭包的使用场景吧。

   没有使用闭包的版本

复制代码
window.onload = function(){
    var ul = document.getElementsByTagName("ul")[0];
    var li = ul.getElementsByTagName("li");
    for(var i=0;i<li.length;i++){
        li[i].onclick = function(){
            console.log(i); //不管我怎么点都是返回6
        }
    }
}
复制代码

  使用了闭包的版本

复制代码
window.onload = function(){
    var ul = document.getElementsByTagName("ul")[0];
    var li = ul.getElementsByTagName("li");
    for(var i=0;i<li.length;i++){
        (function(i){
            li[i].onclick = function(){
                console.log(i); //点击第几个返回第几个
            }
        })(i)
    }
}
复制代码

评论区:

for(var i=0;i<li.length;i++){
(function(i){
li[i].onclick = function(){
console.log(i); //点击第几个返回第几个
}
})(i)
}
是不是类似
for(var i=0;i<li.length;i++){
function aaa(i){
li[i].onclick = function(){
console.log(i); //点击第几个返回第几个
}
}
aaa(i);
}
让aaa(i)里的参数获取i值然后传进去

相关文章:关于在for循环中绑定事件打印变量i是最后一次。

以上是关于初识js中的闭包的主要内容,如果未能解决你的问题,请参考以下文章

JS---闭包

再次讲解js中的回收机制是怎么一回事。

再次讲解js中的回收机制是怎么一回事。

初识JavaScript闭包

初识javascript 闭包和变量提升

js中的闭包和c#中的闭包