为什么这个javascript数组未定义?

时间:2011-08-23 18:56:17

标签: javascript

我有以下代码,它试图生成随机数的二维数组:

var block_size = 32;
var can_width = can.width;
var color_depth = 12;
var passes = can_width / block_size;
var map_store = new Array(passes);

for(i=0;i<passes;i++) {
  for(j=0;j<passes;j++) {
    map_store[i] = new Array(passes);
    color = Math.random() * color_depth;
    map_store[i][j] = Math.round(color);
  }
}

如果我在循环中放置console.log语句似乎工作正常,但是如果我尝试访问循环之外的map_store数组。它的所有元素都是未定义的。这是为什么?

1 个答案:

答案 0 :(得分:9)

map_store[i] = new Array(passes);应高于第二个for循环。您正在清除之前的j值。

for(i=0;i<passes;i++) {
  map_store[i] = new Array(passes); // <--
  for(j=0;j<passes;j++) {
    color = Math.random() * color_depth;
    map_store[i][j] = Math.round(color);
  }
}