递归如何导致栈溢出的?

220 阅读1分钟

1.下面代码会出现内存溢出,为什么呢?

function fn(){
    fn()
}
fn()

image.png
2.使用setTimeout之后不会出现内存溢出。

function fn(){
    setTimeout(fn,0)
}
fn()

这个就要涉及到JS时间循环了,有关宏任务和微任务的细节大家可以看下阮一峰老师的JavaScript 运行机制详解:再谈Event Loop