我已经阅读了一些有关闭包的信息,但是当我尝试编写闭包时完全不同。
这是看似愚蠢的代码
function funcInArray(i){
var f = function(){
var j = i;
console.log(j);
}
f();
}
var items=[]
for (var i = 0; i < 5; i++){
items.push( function(){funcInArray(i)} )
}
items[0](); //shows '5', while I expect it to be '0'
我希望items[0]()
显示0
,items[1]()
显示1
,依此类推。
我的想法是,在每次迭代中,我都可以复制i
的值并创建另一个局部变量。但是我对闭包并不熟悉,所以这段代码是我尝试过的。