function test(){ var result=new Array(); for(var i=0;i<10;i++){ result[i]=function(){ return i;
};
}
return result;
}
输出result输出的是10个"function(){
return i;
} "这样的字符串阿,而不是0到9阿,为什么阿,求解释
};
}
return result;
}
输出result输出的是10个"function(){
return i;
} "这样的字符串阿,而不是0到9阿,为什么阿,求解释
var result=new Array();
for(var i=0;i<10;i++){
result[i]=function(){
return i;
}();
}
return result;
}
var a=test();
alert(a);
这样试试
var result = new Array();
for (var i = 0; i < 10; i++) {
(function(i){
result[i] = i
})(i);
}
return result
}
test()
alert(test())
//以下为一个闭包
result[i]=function(){ return i;
};
}
return result;
}这是由闭包引起的,楼主去理解一下闭包,每次为result[i]赋值的时候,实际上引用的都是同一个i,而这个i的值在循环结束时,其值为10,所以返回的result中,不管怎么执行,都是输出10
};
这是他每次都给数组赋值一个函数所致
其实楼主就忘记了把赋值的这个函数执行而已
//以下为一个闭包
result[i]=function(){ return i;
};
}
return result;
}
var a = test();
for(var i = 0 ;i<a.length;i++){
alert(a[i]());
}= = 楼主不妨运行一下试试,必然都是返回10