javascript - 让递归函数永远运行?

标签 javascript function loops paradigms

我遇到了一个函数,其中有一个 setTimeout,超时值呈指数增长 (timeout *= 2)

let timeout = 10000
function foo() {
    // doSomething without breaking, returning
    setTimeout(foo, timeout)
    timeout *= 2;
}
foo()

这似乎应该不是问题,直觉上感觉 setInterval 已经在做同样的事情了(有一个无限循环,直到它被取消),但是,我的问题在于方法本身。

  • 这是否会导致内存泄漏?
  • 仍然限制对函数的调用次数是否更好/更清楚?
  • 其他语言是否会使用这种方法,或者在 JS 世界之外是否存在不同的思维方式?

最佳答案

这不是递归函数调用。调用 setTimeout 将导致 foo 稍后被 JavaScript 事件循环调用。

此代码不会导致堆栈溢出或任何此类问题。它应该是完全安全的。

要深入了解这是如何工作的,我建议阅读 JS 事件循环和微任务。

关于javascript - 让递归函数永远运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50676564/

相关文章:

javascript - 使用 cookie 持久化 div 切换状态

javascript - 嵌套 'for' 循环 - 数组未定义

javascript - 如何获取下拉到文本区域的值

c++ - 在for循环C++中调用Void函数

javascript - 如何将 log4javascript 与 ScalaJS/PhantomJS 一起使用

c - 使一个函数只能从另一个函数访问

javascript - 如何更改函数内任何给定变量的多个变量?

javascript - 如何覆盖javascript中的窗口和未定义?

javascript - For In循环,为什么无法通过obj.property访问属性值?

loops - 为什么 Scheme 没有循环?