0

我正在尝试使用for循环声明变量,然后测试colsrols是否相同。如果是,它将运行递归函数。但是,我在使用 javascript 时遇到了麻烦。任何人都可以帮忙吗?

现在,它==在比较col.1和时表示意外变量col.2col+j我也在循环内部尝试过for,但它是invalid left-hand side assignment

for (var i = 0; i < 2; i++) {
  var col = {};
  col.i = Math.floor(Math.random() * cols);
  col.i = Math.floor(Math.random() * rows);
}

if (col.1 == col.2 && row.1 == row.2) {
  return this.getRandomBlock();
}
4

2 回答 2

6
  1. 你应该声明col并且row,你只声明col
  2. 您应该在循环之外声明colrow,现在它在每次循环体执行时声明。
  3. 你分配给col.i两次。
  4. 当你写col.i它时,它是 equel 的col['i'],所以你应该使用括号来代替。
  5. 你不需要对象({}),使用数组([])。
  6. 你不能写col.1它是不合法的,点后的数字是不合法的,使用col[1].
  7. 你有01,没有12

.

var col = [];
var row = [];

for (var i = 0; i < 2; i++) {
  col[i] = Math.floor(Math.random() * cols);
  row[i] = Math.floor(Math.random() * rows);
}

if (col[0] == col[1] && row[0] == row[1]) {
  return this.getRandomBlock();
}
于 2012-09-05T05:25:37.773 回答
0

col变量已在循环内声明,这for意味着该变量在每次迭代时都会实例化。因此,在for循环结束时,col变量只有一个属性1 (col.1)

在循环之后,您尝试访问col.2这不是col对象的属性。此外,如果您尝试使用for循环迭代变量(i 或 j)访问 col 对象,则会出现相同的问题,因为迭代后i 或 j的值为2

试试下面它会像专业人士一样工作。

var col = {};
var row = {};
for (var i = 0; i < 2; i++) {
  col.i = Math.floor(Math.random() * cols);
  row.i = Math.floor(Math.random() * rows);
}
if (col.0 == col.1 && row.0 == row.1) {
  return this.getRandomBlock();
}
于 2012-09-05T05:49:40.253 回答