为什么javascript while循环挂起?
我在用javascript做一件非常简单的事情,创建一个扫雷舰网格为什么javascript while循环挂起?,javascript,while-loop,freeze,Javascript,While Loop,Freeze,我在用javascript做一件非常简单的事情,创建一个扫雷舰网格 gridsize=9; //电网初始化 var grid=Array(gridsize).fill(Array(gridsize).fill(null)); //这来自 函数randint(最小值、最大值){ 返回Math.floor(Math.random()*(max-min+1))+min; } nbombs=20; insertedbombs=0; 而(insertedbombs的问题是Array#fill并不像您想象的
gridsize=9;
//电网初始化
var grid=Array(gridsize).fill(Array(gridsize).fill(null));
//这来自
函数randint(最小值、最大值){
返回Math.floor(Math.random()*(max-min+1))+min;
}
nbombs=20;
insertedbombs=0;
而(insertedbombs的问题是Array#fill
并不像您想象的那样
在您的示例中,您创建了一个数组数组(gridsize)。填充(null)
,然后将该数组放在外部数组的每个索引处。这意味着网格实际上包含相同的数组,重复了9次。因此,当您分配网格[0][0]
时,您实际上分配了网格[0][0]
,网格[1][0]
,网格[2][0]
,网格[3][0]
,等等……一次完成(ish)
const gridSize=9;
//电网初始化
常量grid=Array(gridSize).fill(Array(gridSize).fill(null));
console.log(网格[0]==网格[1]);
网格[0][0]=10;
console.log(grid[0][0],grid[0][0]==grid[1][0]);
grid[rx][ry]
将永远不会为null
。您的grid
数组包含相同的内部数组9次。如果您插入了9个炸弹,那么就没有空间了。谢谢!所以问题出在网格初始化中。