为什么输出未定义?

Why does the output comes undefined?

我有两个名为 ballground 的对象,我试图找到它们之间的最大距离,但为什么 greatest 的值总是“undefined"?

代码如下:

var dt: Array = [];
var greatest = 0;
var i: int;
var j: int;
ball.addEventListener(Event.ENTER_FRAME, bg);
function bg(event: Event) {
    d = Math.sqrt(ball.x - ground.x) * (ball.x * ground.x) + (ball.y - ground.y) * (ball.y - ground.y);

    for (i = 1; i < 1002; i++) {
        dt[i] = d;
    }
    for (j = 1; j < 1002; j++) {
        if (dt[j] > dt[j + 1]) {
            greatest = dt[j];
        } else {
            greatest = dt[(j + 1)];
        }
    }
}

我不知道该代码有什么用,也不知道它应该做什么!然而,这就是为什么 greatest 的值总是 undefined:

第一个for循环,将dt数组中11001范围内的元素赋值给d

在第二个 for 循环的每次迭代中,您比较两个相等的值,因此 > 比较失败并且流程执行 else 语句内的指令分配 greatestdt[(j+1)] 的结果。然而,在最后一次迭代中(当 j 等于 1001 时),执行相同的例程,但这次 dt[(j+1)] 的表达式计算为 dt[1002]undefined(请记住 "defined" 元素位于 11001 的范围内 :)