我有一个同时定义和未定义的变量

用户11875622

我在 javascript 中为井字棋写了一些代码,开头是:

var board = [
  [0,0,0],
  [0,0,0],
  [0,0,0]
];

(这是在函数之外声明的)

稍后在函数中生成计算机移动时,它会在循环中运行以下代码行:

if (board[xx][yy] == 0) {

但它给了我错误TypeError: Cannot read property '0' of undefined(xx 等于 0)。

如果我console.log(board)在同一个函数中添加 a并在给我错误的行之前循环,它会给我同样的错误,但将 board 的值记录到控制台(在错误之后)。

如果我可以记录变量,为什么我不能在该行中引用它?

这是一些代码:(我没有包含它所指的 HTML)

var board = [
  [0,0,0],
  [0,0,0],
  [0,0,0]
];

const buttonGrid = [
  [1,2,3],
  [4,5,6],
  [7,8,9]
];

function computerMove() {
  //check for winning move
  xx = -1;

  while (xx < 3) {
    xx ++;
    yy = -1;
    while (yy < 3) {
      yy ++;
      if (board[xx][yy] == 0) {       //line with error
        board[xx][yy] = 2;
        if (checkWin() == 2) {        //checkWin returns the winning player
          toClick = (buttonGrid[xx][yy]).toString(); //
          updateBox(toClick, xx, yy); //confirms move
          return;
        }
        else {
          board[xx][yy] = 0;
        }
      }
    }
  }
}
泰勒·罗珀

考虑以下代码片段,它在您的所有代码中都存在(对于yyxx):

var yy = -1;
while (yy < 3) {
  yy++;
  console.log(yy);
}

请注意,最终迭代记录3. 您的数组只有三个项目,因此尝试访问索引处的项目3将返回undefined


更改... < 3... < 2将解决此问题:

var yy = -1;
while (yy < 2) {
  yy++;
  console.log(yy);
}

或者更好的是,使用传统的for循环:

for (let yy = 0; yy <= 2; yy++) {
  console.log(yy);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

只有一个会话变量未定义

我的PHP中有一个未定义的变量

Bash:每个未定义变量一个参数

如果我在fortran中调用一个函数而未定义变量,会发生什么?

为什么我得到一个未定义的变量:laravel 中的请求

我正面临一个未定义的变量:PHP 中的通知错误

Vue/Vuetify:为什么我会收到一个 ReferenceError:变量未定义?

我收到一个错误,即函数内的变量未定义

为什么我的方法不调用另一个(未定义的变量)

变量似乎是未定义和同时定义的?

为什么我得到一个未定义的?

如何告诉JSHint忽略一个文件中的所有未定义变量?

JavaScript:我传入一个列表,试图访问一个索引,它说该变量未定义

为什么我有一个错误“无法读取未定义的属性”地图”?

在 laravel 5.6 中我的刀片视图有一个未定义的索引问题

未定义对某事的引用,因为我有一个库

为什么我的变量在更改另一个变量的显示后变得未定义?

我在同一文件中有2个互相引用的变量,但我不断收到一个错误,指出后一个未定义。我该如何解决?

定义了一个Ruby NameError,未定义的局部变量

Python说一个变量是未定义的,即使它已经明确定义了

我收到通知:将变量传递到另一个页面时未定义的索引

虽然我定义了一个通道,但是nodejs说它是未定义的

Angular 返回一个未定义的数组,但我之前定义过

JS函数在控制台中给我未定义的内容,但我期望有一个数字

为什么我得到一个列表未定义的数据,没有我的下拉列表?

我有使用羊驼 websocket 的代码,但是有一个未定义的函数

未定义的变量:变量不会在另一个页面中传递

Ajax 从一个对象中一起返回未定义和有效的数据

在一个函数中定义的变量,而在另一种打字稿中未定义的变量