嘿,我试图建立一个扫雷游戏
所以我创建游戏并调用emptyCell
当用户点击空单元格时(游戏中的单元格框)
现在我收到了这个错误:
未捕获RangeError:超出最大调用堆栈大小
所以我搜索了一下,我发现这个答案是Chrome/jQuery Uncaught RangeError: Maximum call stack size exceeded:
当您有无限循环时,也可能会出现此错误。确保你没有任何无休止的递归自我引用。
所以我检查并重新确认这些函数给自己打了500多次 我不知道为什么,我的页面上只有100个单元格 这是功能:
function emptyCell(cell, x, y) {
cell.className = "show";
var i, Next, Prev;
Next = y + 1;
Prev = Prev + 1;
for (i = x - 1; i <= x + 1; i++) {
if (Game[Next] !== undefined && Game[Next][i]) {
if (Game[Next][i] == 0) emptyCell(GameBoxes[Next][i], i, Next);
else {
GameBoxes[Next][i].innerHTML = Game[Next][i];
GameBoxes[Next][i].className = "show c" + Game[Next][i];
}
}
if (Game[Prev] !== undefined && Game[Next][i]) {
if (Game[Prev][i] == 0) emptyCell(GameBoxes[Prev][i], i, Prev);
else {
GameBoxes[Prev][i].innerHTML = Game[Prev][i];
GameBoxes[Prev][i].className = "show c" + Game[Prev][i];
}
}
}
if (Game[y] !== undefined && Game[y][x - 1] !== undefined) {
if (Game[y][x - 1] == 0) emptyCell(GameBoxes[y][x - 1], x - 1, y);
else {
GameBoxes[y][x - 1].innerHTML = Game[y][x - 1];
GameBoxes[y][x - 1].className = "show c" + Game[y][x - 1];
}
}
if (Game[y] !== undefined && Game[y][x + 1] !== undefined) {
if (Game[y][x + 1] == 0) emptyCell(GameBoxes[y][x + 1], x + 1, y);
else {
GameBoxes[y][x + 1].innerHTML = Game[y][x + 1];
GameBoxes[y][x + 1].className = "show c" + Game[y][x + 1];
}
}
}