gpt4 book ai didi

javascript - JavaScript 中递归的效果

转载 作者:行者123 更新时间:2023-11-28 21:02:56 24 4
gpt4 key购买 nike

以下代码段演示了使用 JavaScript 的递归调用。

function timedCount()
{
document.getElementById('txt').value=c;
c=c+1;
t=setTimeout("timedCount()",1000);
}

来源来自here .

我的问题:这不会导致堆栈堆积并随后导致堆栈溢出吗?我知道,这在 Pascal 和 C/C++ 等语言中肯定会崩溃。

感谢您对此的任何建议。

最佳答案

这不是真正的递归,因此不会创建深层调用堆栈。

<小时/>

但是,您永远不要将字符串传递给setInterval()setTimeout()。这样做与使用 eval() 一样糟糕,一旦使用变量,它就会导致可能不可读且可能不安全的代码,因为您需要将它们插入字符串而不是传递实际变量。

正确的解决方案是setTimeout(function() {/* your code *) }, msecs);。这同样适用于setInterval()。如果只想调用单个函数而不带任何参数,也可以直接传递函数名:setTimeout(someFunction, msecs);(注意这里有没有() 位于函数名后面)

因此,在您的情况下,请使用 t = setTimeout(timedCount, 1000);

关于javascript - JavaScript 中递归的效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10528357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com