js回调函数内给外部变量赋值

想用回调函数给数组赋值,但是只会打印一个空的数组如果回调函数内是area[i]=1,则能正常赋值。不懂为什么会这样。functioninitSpace(){vararea... 想用回调函数给数组赋值,但是只会打印一个空的数组
如果回调函数内是area[i]=1,则能正常赋值。不懂为什么会这样。
function initSpace(){
var area = new Array(18);
foreach(area,function(row,i){
row=1;
});
}
console.log(area.toString());
}
function foreach(list, callback) {
for (var i = 0; i < list.length; i++) {
callback(list[i], i);
}
}
展开
 我来答
匿名用户
2017-08-17
展开全部
callback( list[ i ], i )这里的传的参数list[ i ]实际上是一个拷贝,所以你的row=i在循环的时候改的只是拷贝的值,退出循环就失效了。你直接用area[ i ]=i能正常赋值是因为area就是数组本身,你修改它自身当然有效
更多追问追答
追问

那为什么initSpace()内的有正常打印,在onload直接报错,

追答
因为onload中你重新定义了area为null,一个null你对它进行操作。当然要报错
东方南成
2021-03-22
知道答主
回答量:19
采纳率:0%
帮助的人:4.2万
展开全部
foreach(area,function(row,i){
row=1;
});
——上面这个“row”应该是等于i吧。不然你这回调函数多个形参i是做什么用的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式