为什么这个循环功能每次都在 javaScript return 0 中?我如何在 python 中做类似的事情?

Why doesn't this cycling function in javaScript return 0 every time? How would I do something similar in python?

我是编程新手,在了解了一些 Python 之后正在学习一些 javaScript。我正在使用 javaScript 来控制移动 AR 应用程序中的元素,并且我创建了一个非常简单的循环器功能,它完全按照我想要的方式工作,但老实说,我正在尝试理解它为什么起作用!我想要一个在每次点击时循环 1、2、3 的功能。第一次点击将 return '1',第二次点击 '2',第三次点击 '3',然后在其他点击上重复此序列。这是我经过大量试验、错误和谷歌搜索后得出的结论:

const cycler = {
     current: -1,
     cycle: function() {
      if (cycler.current == 3) {
       cycler.current = 0;
      } else {
       cycler.current++;
      }
      console.log(cycler.current);
     }
}

cycler.cycle()
cycler.cycle()
cycler.cycle()
cycler.cycle()
cycler.cycle()

在点击事件中,我调用 cycler.cycle();它有效...returning 1,2,3,1,2,3,etc.对应于我的点击...但我不明白为什么每次点击时它不只是 return 0。为什么每次我调用它时 'current' 都不会重置为“-1”?我如何在 python 中做类似的事情?我怎么看这个?感谢您的任何见解!

当在内存中创建对象时,它会将初始当前值设置为 -1,除非对象被删除并在内存中重新创建,否则该值将是您上次设置的值。

您的 cycler 是 javascript 中的对象字面量。 它有一个 属性、current 和一个方法 cycle。 调用方法不会重新创建对象,它只是运行函数。
如您所知,该函数只是增加 current 属性 的值(除非当前值为 3,当然,在这种情况下它会将值重置为 0 .)

在 python 中,您可以创建一个 class 来创建一个计数器对象。它的构造函数将包含与您在此处创建的对象非常相似的代码。
如果您继续从 class 创建新实例并在每个实例上调用一次 .cycle,您的日志将包含一堆 0,正如您所期望的那样。
但是,如果您在同一个实例上重复调用 .cycle,您将获得此处发现的行为。