0

我正在处理一些操作二维“单元”对象数组的代码。

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是二维数组,cell是一个特定的 Cell 对象。定义test2导致以下错误:

TypeError: test1 is undefined

我已经在调试器中确认xy是有效的整数(在这种特殊情况下,它们分别是 0 和 1)。temp是由 5 个 Cell 对象子数组组成的有效数组,因此不应出现任何类型的索引越界错误。temp将一个级别索引为test1一个有效的 5 个单元格数组(基本上是一行)似乎没有问题temp。问题是当我索引到数组的第二维时,这很奇怪,因为索引到相同的确切数组在代码的其他部分中起作用。

编辑:问题似乎出在 x 和 y 的输入上。当我对这些值进行硬编码时,一切正常。例如,addPossible(2, 3)作品。当动态提供值时会发生错误,但这很奇怪,因为即使在这些情况下,调试器也会将 x 和 y 显示为完全正常且有效的整数。我 99% 确定这不是越界问题。我查过了,数组是 5x5,x 和 y 总是在 0 到 4 之间。

4

1 回答 1

0

很可能您的临时数组大于 cell.x 中存在的任何值。也有可能 cell.x 太大而你想要 cell.x -1

于 2013-10-17T21:25:10.467 回答