理解 "栈" "队列","堆"(后进先出)
Posted yangwenbo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解 "栈" "队列","堆"(后进先出)相关的知识,希望对你有一定的参考价值。
【栈】
??函数调用形成了一个栈帧
function foo(b) {
var a = 10;
return a + b + 11;
}
function bar(x) {
var y = 3;
return foo(x * y);
}
console.log(bar(7));
当调用bar时,创建了第一个帧 ,帧中包含了bar的参数和局部变量。当bar调用foo时,第二个帧就被创建,并被压到第一个帧之上,帧中包含了foo的参数和局部变量。当foo返回时,最上层的帧就被弹出栈(剩下bar函数的调用帧 )。当bar返回的时候,栈就空了
【堆】
??对象被分配在一个堆中,即用以表示一个大部分非结构化的内存区域
【队列】
??一个 javascript 运行时包含了一个待处理的消息队列。每一个消息都与一个函数相关联。当栈拥有足够内存时,从队列中取出一个消息进行处理。这个处理过程包含了调用与这个消息相关联的函数(以及因而创建了一个初始堆栈帧)。当栈再次为空的时候,也就意味着消息处理结束
原文地址:https://www.xiaohuochai.cc/posts/5ad9d7dc352ca82950939e4f
以上是关于理解 "栈" "队列","堆"(后进先出)的主要内容,如果未能解决你的问题,请参考以下文章