如何解决: 类型错误: 网格[i][j] 未定义



>我正在尝试构建一个网格并将网格的每个单元格存储为名为 grid 的数组中的对象。我已经将 grid 定义为全局变量,所以我可以使用 createGrid(( 填充它,然后使用 drawGrid(( 读取它。

我想将网格实现为画布动画教程的一部分。我的代码是:

var grid = [];
function drawGrid() {
  for (var i = 0; i < cols; i++) {
    grid[i] = [];
    for (var j = 0; j < rows; j++) {
      if (grid[i][j].food === 0) {
        console.log("Has a good value")
      }
    }
  }
}
function Cell(i, ii) {
  this.i = i;
  this.ii = ii;
  this.food = false;
}
function createGrid() {
  for (var i = 0; i < cols; i++) {
    grid[i] = [];
    for (var j = 0; j < rows; j++) {
      grid[i][j] = new Cell(i, j);
    }
  }
}
function mainLoop() {
  clearCanvas();
  drawGrid();
  requestAnimationFrame(mainLoop)
}
createGrid();
mainLoop();

我在调用循环之前创建了网格,因此一旦调用函数 drawGrid((,网格就已经被填充了。我没有将createGrid((放在循环中,因为不是每次都创建网格所必需的,还因为每次循环运行时都需要大量资源

浏览器在此处抛出错误:

if (grid[i][j].food === false) {
  console.log("Has a good value")
}

由于测试的值是布尔类型,因此写if (grid[i][j].food === false) {是无稽之谈。

您必须按如下方式编码:如果值为 true
,则if (grid[i][j].food) {实现条件否则,如果我们想实现条件,如果它是假的:if (!grid[i][j].food) {

值 i 和 j 仍然需要正确(i = 零到 cols-1,等等(

相关内容

  • 没有找到相关文章

最新更新