为什么输出未定义?
Why does the output comes undefined?
我有两个名为 ball
和 ground
的对象,我试图找到它们之间的最大距离,但为什么 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
数组中1
到1001
范围内的元素赋值给d
!
在第二个 for
循环的每次迭代中,您比较两个相等的值,因此 >
比较失败并且流程执行 else
语句内的指令分配 greatest
与 dt[(j+1)]
的结果。然而,在最后一次迭代中(当 j
等于 1001
时),执行相同的例程,但这次 dt[(j+1)]
的表达式计算为 dt[1002]
是 undefined
(请记住 "defined" 元素位于 1
到 1001
的范围内 :)
我有两个名为 ball
和 ground
的对象,我试图找到它们之间的最大距离,但为什么 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
数组中1
到1001
范围内的元素赋值给d
!
在第二个 for
循环的每次迭代中,您比较两个相等的值,因此 >
比较失败并且流程执行 else
语句内的指令分配 greatest
与 dt[(j+1)]
的结果。然而,在最后一次迭代中(当 j
等于 1001
时),执行相同的例程,但这次 dt[(j+1)]
的表达式计算为 dt[1002]
是 undefined
(请记住 "defined" 元素位于 1
到 1001
的范围内 :)