我尝试使用for
循环声明变量,然后测试 cols 和 rols 是否相同。如果是,它将运行递归函数。但是,我在javascript中做的很麻烦。有人可以帮忙吗?
现在,在比较==
和col.1
时,它会显示意外变量col.2
。我还在col+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();
}
答案 0 :(得分:6)
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();
}
答案 1 :(得分:0)
col 变量已在for
循环内声明,这意味着变量在每次迭代时都会实例化。因此,在for
循环结束时, col 变量只有一个属性 1(col.1)。
在循环之后,您尝试访问 col ,这不是 col 对象的属性。此外,如果您尝试使用for
循环迭代变量(i或j)访问col对象,则会出现同样的问题,因为迭代后 i或j 的值 2 < / em>的
尝试下面它会像专业人士一样工作。
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();
}