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

想用回调函数给数组赋值,但是只会打印一个空的数组
如果回调函数内是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);
}
}

callback( list[ i ], i )这里的传的参数list[ i ]实际上是一个拷贝,所以你的row=i在循环的时候改的只是拷贝的值,退出循环就失效了。你直接用area[ i ]=i能正常赋值是因为area就是数组本身,你修改它自身当然有效追问

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

追答

因为onload中你重新定义了area为null,一个null你对它进行操作。当然要报错

追问

可是area这个变量我只在onload中声明而已,initSpace中对这个变量赋值。大神可以私信加下联系方式吗。你私信我,你匿名了,我不能私信你

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-22
foreach(area,function(row,i){
row=1;
});
——上面这个“row”应该是等于i吧。不然你这回调函数多个形参i是做什么用的?
相似回答