Rob*_*ert 3 javascript recursion slideshow
我的目标是使用 HTML/CSS/JS 制作背景图片的幻灯片。我发现的许多解决方案都促进了这样的事情:
my_recursion();
function my_recursion () {
// cycle the Background image ...
setTimeout(my_recursion, 3000);
}
Run Code Online (Sandbox Code Playgroud)
我认为这是不好的风格是错误的吗?我希望在例如周期 1000 时,所有其他 999 个 my_recursion 实例仍然打开/在堆栈上?这不会创建消耗越来越多内存的无限堆栈吗?
或者是否涉及某种智能,例如“如果一个函数在最后调用自己,则第 (n-1) 个函数将被销毁,包括在其中分配的所有变量”?
这不会导致无休止的堆栈增加,因为 setTimeout 的工作方式,恕我直言,它的风格还不错。
setTimeout
不保证代码会在给定的超时后直接运行。相反,在超时之后,它会将回调推送到“队列”上,当堆栈为空时将对其进行处理。所以它只会在 my_recursion 返回并且堆栈为空时运行。
如果一个函数在最后调用自己 (...)
my_recursion
不会在任何地方称自己。它只是将自己作为参数传递给setTimeout
. 之后,它会继续执行,之后直接返回,并从堆栈中弹出。
归档时间: |
|
查看次数: |
361 次 |
最近记录: |