使用 javascript 使用 for 循环声明变量

Posted

技术标签:

【中文标题】使用 javascript 使用 for 循环声明变量【英文标题】:declaring variables using for loop using javascript 【发布时间】: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();

【问题讨论】:

【参考方案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】:
    你应该声明colrow,你只声明col。 您应该在循环外声明colrow,现在它在每次循环体执行时声明。 您分配给col.i 两次。 当你写col.i时,它是col['i']的后续,所以你应该使用括号来代替。 您不需要对象 (),使用数组 ([])。 不能写col.1不合法,点后面的数字不合法,用col[1]。 你有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();

【讨论】:

伟大的斯佩兰斯基。我只是写下同样的内容。

以上是关于使用 javascript 使用 for 循环声明变量的主要内容,如果未能解决你的问题,请参考以下文章

就声明而言,Javascript for of 循环中的 let 和 const 之间没有区别吗?

JavaScript循环 while/do while/for的使用

varletconst区别

我可以在 JavaScript 的不同 for 循环中声明相同的变量两次吗? [复制]

javaScript数组遍历

小程序里let和var以及const区别