區別:1、在記憶體操作中,堆疊由作業系統自動分配和釋放,而堆由開發人員自主分配和釋放;2、在資料結構中,堆疊是一種運算受限的線性表,只允許表的一端進行插入和刪除操作,而堆是一種優先隊列,會根據優先權找優先權最高的先執行。
本教學操作環境:windows10系統、javascript1.8.5版、Dell G3電腦。
在理解堆疊與堆疊這兩個概念時,需要放到具體的場景下去理解。一般情況下有兩層意義:
(1)記憶體操作場景下,堆疊與堆疊表示兩種記憶體的管理方式。
(2)資料結構場景下,堆疊與堆疊表示兩種常用的資料結構。
1、記憶體操作場景
#堆疊由作業系統自動分配和釋放,用於存放簡單的資料段,佔據固定大小的空間,例如基本資料類型(Number、String、Boolean…)和函數的參數值等。
堆由開發人員自主分配和釋放,若不主動釋放,程式結束時由瀏覽器回收,用於儲存引用類型(引用類型的變數實際上保存的不是變數本身,而是指向記憶體空間的指針)。
JavaScript中的資料類型
2、資料結構場景
#JavaScript存在堆疊和佇列概念,透過陣列的方式,模仿實作堆疊。
堆疊:堆疊是一種運算受限的線性表,其限制是指只僅允許在表的一端進行插入和刪除操作,這一端被稱為棧頂(Top),相對地,另一端稱為棧底(Bottom)。把新元素放到棧頂元素的上面,使之成為新的棧頂元素稱作進棧、入棧或壓棧(Push);把棧頂元素刪除,使其相鄰的元素成為新的棧頂元素稱作出堆疊或退棧(Pop)。透過數組的push()、pop()方法實作堆疊。
堆:堆其實是一種優先隊列,也就是說隊列中存在優先權,例如隊列中有很多待執行任務,執行時會根據優先權找優先權最高的先執行。
相關推薦:javascript學習教學
以上是JavaScript中棧和堆的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!