2048Game:Uncaught TypeError:无法读取未定义的属性“0”

时间:2016-09-05 16:19:26

标签: javascript jquery

我正在学习写一个典型的游戏(2048)

我正在写一个函数,告诉当前4x4板上是否有空格。但每次调用noSpace()时,控制台都会显示以下错误:

未捕获的TypeError:无法读取未定义的属性“0”。(指向board [i] [j] == 0)

我在哪里弄错了?

function noSpace(board) {
  for(var i = 0; i < 4; i++) {
    for(var j = 0; j < 4; j++) {
      if(board[i][j] == 0)
        return false; //there is an empty grid
    }
  }
  return true; //there is no empty grid
}

function gameStatus(board){
  if(noSpace(board) && noMove(board))
    alert("Game over!");
}

1 个答案:

答案 0 :(得分:0)

这表示board [i]未定义,因此当代码尝试获取[j]属性时,未定义的对象上不存在。

要么检查为什么board [i]未定义,要么添加一个签入来处理空板。

function noSpace(board) {
    for (var i = 0; i < 4; i++) {
        for (var j = 0; j < 4; j++) {
            if (board[i]) { //!Check board
                if (board[i][j] == 0)
                    return false; //there is an empty grid
            } else { 
              return false; //board is null
            }
        }
    }
    return true; //there is no empty grid
}