未捕获RangeError:超出最大调用堆栈大小错误

时间:2016-03-08 18:35:33

标签: javascript

嘿,我试图建立一个扫雷游戏 所以我创建游戏并调用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];
    }
  }
}

0 个答案:

没有答案