For 循环不 运行 我期望它 运行

For loop does not run how I expect it to run

for 循环并不像我期望的那样 运行。我希望 for 循环只 运行 一次,但是当我 运行 它时,它会显示一个动画。

我使用的编程环境: https://www.khanacademy.org/computing/computer-programming/programming/arrays/pp/project-make-it-rain

var xPositions = [200];
var yPositions = [0];

draw = function() {
    background(204, 247, 255);

    for (var i = 0; i < xPositions.length; i++) {
        noStroke();
        fill(0, 200, 255);
        ellipse(xPositions[i], yPositions[i], 10, 10);
        yPositions[i] += 5;
    }

};

当我们说 i++ 时,条件 i < xPositions.length 不再成立。

那么为什么循环 运行 不止一次?

有人告诉我,因为 draw 函数被永远调用,所以循环也将被永远调用。

但是,第二次循环尝试 运行,for 循环的条件不满足,因此不应该 运行。

谢谢。

Blockquote

.

块引用

I would expect the for loop to run only once

这是正确的期望...有一个补充:for 循环只会 运行 一次 每个函数调用 。如果draw()被多次调用,那么每次调用函数都会执行循环。

draw() 创建动画的单帧。在这种情况下,您将雨滴向下移动 5 个像素,然后在新位置渲染帧。但是要获得动画,您需要每秒多次调用 draw()。这类似于在每页上画一个略有不同版本的火柴人来翻转笔记本的角,以产生运动的错觉。在您的编程环境中会处理对 draw() 的重复调用。

您在 draw() 中编写的 for 循环旨在遍历每个雨滴。在这种情况下,您只有一个。我建议在不同位置添加 3 或 4 个雨滴。然后您将看到 for 循环如何遍历每个雨滴,将它们每个向下移动 5 个像素。然后,您在 Kahn Academy 上的编程环境将每秒为动画中的每一帧调用 draw() 几次。

循环应该运行只有一次,但是在处理js时,draw函数会一直调用。