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
提交
取消
