【问题标题】:declaring variables using for loop using javascript使用 javascript 使用 for 循环声明变量
【发布时间】:2012-08-29 18:53:59
【问题描述】:

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

现在,在比较 col.1col.2 时,它会显示意外变量 ==。我还在for 循环中尝试了col+j,但它是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();
}

【问题讨论】:

    标签: javascript variables object for-loop assignment-operator


    【解决方案1】:

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

    在循环之后,您尝试访问不是 col 对象的属性的 col.2。此外,如果您尝试使用 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();
    }
    

    【讨论】:

      【解决方案2】:
      1. 你应该声明colrow,你只声明col
      2. 您应该在循环外声明colrow,现在它在每次循环体执行时声明。
      3. 您分配给col.i 两次。
      4. 当你写col.i时,它是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();
      }
      

      【讨论】:

      • 伟大的斯佩兰斯基。我只是写下同样的内容。
      猜你喜欢
      • 1970-01-01
      • 2021-12-22
      • 2021-08-25
      • 2011-11-14
      • 2021-08-29
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多