function f(x){
var a=[];
for(var i=0,j=x.length;i<j;i++){
var temp = x[i];
a.push(
function (){ //闭包
alert(temp+" "+x[i]) //导致temp与i都是时刻变化的
}
);
}
return a
}
function e(){
var a=f(["a","b","c"]);
for(var i=0,j=a.length;i<j;i++){
a[i]();
}
}
e();
上面代码运行后 结果输出都是“c undefined”
function f(x){
var a=[];
for(var i=0,j=x.length;i<j;i++){
var temp = x[i];
a.push(
(function(temp,i){ //用函数参数的形式 将闭包断开
return function (){alert(temp+" "+x[i])}
})(temp,i);
);
}
return a
}
function e(){
var a=f(["a","b","c"]);
for(var i=0,j=a.length;i<j;i++){
a[i]();
}
}
e();