1. 程式人生 > >理解 "棧" "隊列","堆"(後進先出)

理解 "棧" "隊列","堆"(後進先出)

ava return 棧幀 script 成了 foo 結構 相關 以及

【棧】

??函數調用形成了一個棧幀

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

理解 "棧" "隊列","堆"(後進先出)