为什么javaScript中的循环函数每次都不返回0?我如何在python中做类似的事情?

问题描述 投票:0回答:2

我不熟悉编程,在了解了一些Python之后我正在学习一些javaScript。我正在使用javaScript来控制移动AR应用程序中的元素,并且我创建了一个非常简单的循环器函数,它完全按照我的要求运行,但老实说,我正在尝试理解为什么它有效!我想要一个在每个水龙头上循环1,2,3的功能。首先点击将返回'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()

在tap事件中,我调用cycler.cycle();它的工作原理......返回1,2,3,1,2,3等。对应于我的水龙头...但我不明白为什么每次点击它都不会返回0。为什么每次调用时都不会将“当前”重置为“-1”?我如何在python中做类似的事情?我怎么想这个?感谢您的任何见解!

javascript python function counter cycle
2个回答
1
投票

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

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.