【问题标题】:declaring variables using for loop using javascript使用 javascript 使用 for 循环声明变量
【发布时间】:2012-08-29 18:53:59
【问题描述】:
我正在尝试使用 for 循环声明变量,然后测试 cols 和 rols 是否相同。如果是,它将运行递归函数。但是,我在使用 javascript 时遇到了麻烦。有人可以帮忙吗?
现在,在比较 col.1 和 col.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】:
- 你应该声明
col和row,你只声明col。
- 您应该在循环外声明
col 和row,现在它在每次循环体执行时声明。
- 您分配给
col.i 两次。
- 当你写
col.i时,它是col['i']的后续,所以你应该使用括号来代替。
- 您不需要对象 (
{}),使用数组 ([])。
- 不能写
col.1不合法,点后面的数字不合法,用col[1]。
- 你有
0和1,而不是1和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();
}