var a = new Array();
for(var i = 0 ; i < 10 ; i++){
a[i] = function(){
return (function(i){
console.log(i);
return i;
})(i);
};
}
console.log(a[5]());想实现a[i]()的每个函数返回对应i的值,但怎么弄都是输出的10,尝试多次还是找不到出错的地方,求解答,谢谢。
2 回答
已采纳
西兰花伟大炮
TA贡献376条经验 获得超318个赞
var a = new Array(); for(var i = 0 ; i < 10 ; i++){ a[i] = (function(){ console.log(i); return i; })(i); }; console.log(a[5]);
DoubleStone
TA贡献1条经验 获得超0个赞
var a=new Array(); for(var i=0;i<10;i++){ a[i]=function(x){ return function(){ return x; }; }(i); } console.log(a[5]());
自己尝试半天解决了。。JS函数表达式只能强制传参,所以在函数里面再return一个函数接收前面传进去的i值,就能解决了
var a=new Array(); for(var i=0;i<10;i++){ a[i]=function(x){ return function(m){ return x+m; }; }(i); } console.log(a[5](3));//8
这样写一下就更简洁能看懂了。
添加回答
举报
0/150
提交
取消