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阿,为什么阿,求解释
解决方案 »
- 请大家帮我看看这个下拉菜单mouseout的问题
- 问一个正则表达式的问题
- 录求js可选择树行控件
- 怎么用javascript改变层的位置
- 一个只能输入数值的文本框,很简单,支持2,8,10,16进制
- 急问<A href="javascript:openscriphtml()">..</A>中的js怎么理解,怎么用呢?
- 怎么判断循环里的text框为空??
- java script 如何 实现??????要加一个检查,用户是否选择答案,问题是,怎么取radio的name???????
- 急,关于select对象,改变其选择项顺序问题
- 关于桌面远程MsRdpClient在IE8上的问题
- js 保存input file 里面的图片操作方法
- check判断 及radio取值
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