通常情况下无限递归会导致栈溢出

但如下无限递归不会造成栈溢出


这是因为事件循环机制,具体可以看本人另一篇文章结合Chrome文档详解事件循环
每次执行 setTimeout(foo, 0),都相当于将 foo 函数推到任务队列,也就是下一次事件循环中。这意味着每一次 foo 的执行都在事件循环的不同“轮次”中进行。
一旦在函数执行期间再次调用该函数,仍会导致栈溢出

通常情况下无限递归会导致栈溢出

但如下无限递归不会造成栈溢出


这是因为事件循环机制,具体可以看本人另一篇文章结合Chrome文档详解事件循环
每次执行 setTimeout(foo, 0),都相当于将 foo 函数推到任务队列,也就是下一次事件循环中。这意味着每一次 foo 的执行都在事件循环的不同“轮次”中进行。
一旦在函数执行期间再次调用该函数,仍会导致栈溢出

362

被折叠的 条评论
为什么被折叠?