我正在研究一些操作2D单元“单元”对象的代码。
function randomDestFromStart(cell, temp)
{
function addPossible(x, y)
{
var test1 = temp[x];
var test2 = test1[y]; // This line
// ... //
}
for (var i = 0; i < temp[0].length; i++)
addPossible(cell.x, i);
// ... //
}
temp
是2d数组,cell
是特定的Cell对象。定义test2
会导致以下错误:
TypeError: test1 is undefined
我在调试器中确认x
和y
是有效整数(在这种特殊情况下,它们分别为0和1)。 temp
是一个有效的数组,由5个Cell对象的子数组组成,因此不应该有任何索引超出范围的错误。因为temp
是一个有效的5个单元格数组(基本上是test1
行),所以似乎没有将一个级别索引到temp
的问题。问题是当我索引到数组的第二维时,这很奇怪,因为索引到相同的精确数组可以在代码的其他部分中工作。
编辑:问题似乎与x和y的输入有关。当我对这些值进行硬编码时,一切正常。例如,addPossible(2, 3)
有效。动态提供值时会发生错误,但这很奇怪,因为即使在这些情况下,调试器也会将x和y显示为完全正常且有效的整数。我99%肯定这不是一个出界问题。我检查过,数组是5x5,x和y总是在0到4之间。
答案 0 :(得分:0)
您的临时数组很可能比cell.x中存在的任何值都大。它也可能是cell.x太大而你想要cell.x -1