function createFunctions(){
var result = new Array();
for(var i=0;i<10;i++){
result[i]=function(){
return i;
};
}
return result;
}
var funcs=createFunctions();
for(var i=0;i<funcs.length;i++){ document.write(funcs[i]()+"<br/>");
}
为什么每次输出的是10,我对闭包也不太,清楚,请老鸟们给点指教,谢谢了
var result = new Array();
for(var i=0;i<10;i++){
result[i]=function(){
return i;
};
}
return result;
}
var funcs=createFunctions();
for(var i=0;i<funcs.length;i++){ document.write(funcs[i]()+"<br/>");
}
为什么每次输出的是10,我对闭包也不太,清楚,请老鸟们给点指教,谢谢了
var result = new Array();
for(var i=0;i<10;i++){
result[i]=function(i){
return function(){
return i;
}
}(i)
}
return result;
}
var funcs=createFunctions();
for(var i=0;i<funcs.length;i++){document.write(funcs[i]()+"<br/>");
}
<script>
function createFunctions() {
var result = new Array();
for (var i = 0; i < 10; i++) {
result[i] = cc(i);
}
return result;
} function cc(i) {
return i;
} var funcs = createFunctions(); for (var i = 0; i < funcs.length; i++) {
document.write(funcs[3] + "<br/>");
}
</script>
function createFunctions(){
var result = new Array();
for(var i=0;i<10;i++){
result[i]=function(j){
return j;
};
}
return result;
}
var funcs=createFunctions();
for(var i=0;i<funcs.length;i++){
document.write(funcs[i](i)+"<br/>");
}
</script>
给简单改动一下,就是闭包了。哈哈。其实你已经形成闭包了,但没使用。你需要给个参数进去。
function createFunctions(){
var result = new Array();
for(var i=0;i<10;i++){result[i]=function(i){
return i;
};
}
return result;
}
var funcs=createFunctions();
for(var i=0;i<funcs.length;i++){document.write(funcs[i](i)+"<br/>");
}
funcs这是一个函数数组,所以楼主没去给整个函数设置参数所以它就自动读取定义这个函数的地方的变量i
而最后这个i是10所以一直输出的就是10(我是这么理解的)