码迷,mamicode.com
首页 > 其他好文 > 详细

理解 "栈" "队列","堆"(后进先出)

时间:2019-01-08 17:16:51      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:www   函数调用   处理   fun   pos   返回   javascrip   log   局部变量   

【栈】

??函数调用形成了一个栈帧

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

理解 "栈" "队列","堆"(后进先出)

标签:www   函数调用   处理   fun   pos   返回   javascrip   log   局部变量   

原文地址:https://www.cnblogs.com/yangwenbo/p/10239879.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!