首页 > 代码库 > 初识js中的闭包

初识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中的闭包