javascript中的堆栈大小和回调

javascript中的堆栈大小和回调,javascript,callback,stack,Javascript,Callback,Stack,使用回调的异步操作是否会增加堆栈大小?我没有足够的javascript解释器知识或合适的工具来解决这个问题。我的goto工具是firebug控制台,它显示堆栈大小没有增加,但我可能看错了。有人知道吗?异步回调就像事件回调一样,通过事件循环一个接一个地运行。它不是从将其放入事件循环的函数的同一调用堆栈中调用的,因为循环中的每个函数都在调用下一个函数之前运行到完成。所以不,它们不会增加堆栈大小。我相信现代浏览器中的所有javascript引擎都是单线程的,这意味着在当前执行路径结束之前,回调实际上不

使用回调的异步操作是否会增加堆栈大小?我没有足够的javascript解释器知识或合适的工具来解决这个问题。我的goto工具是firebug控制台,它显示堆栈大小没有增加,但我可能看错了。有人知道吗?

异步回调就像事件回调一样,通过事件循环一个接一个地运行。它不是从将其放入事件循环的函数的同一调用堆栈中调用的,因为循环中的每个函数都在调用下一个函数之前运行到完成。所以不,它们不会增加堆栈大小。

我相信现代浏览器中的所有javascript引擎都是单线程的,这意味着在当前执行路径结束之前,回调实际上不会发生。这意味着堆栈已完全展开,回调将与(基本上)一个新堆栈一起发生

只有在调用函数或声明局部变量时,堆栈大小才会增加。当您离开导致增加的作用域时,堆栈的大小将再次减小

如果您对总体内存使用更感兴趣,那么它就有点复杂了

回调在执行之前会占用一点内存,但是一旦回调完成,javascript引擎应该在回调结束后自行清理。如果将新数据放在堆上(例如,通过全局变量),那么该内存将不会被释放,因为在回调之后它仍在使用中