JS 堆疊
堆是堆記憶體的簡稱,棧是棧記憶體的簡稱。
堆是動態分配記憶體,記憶體大小不一,也不會自動釋放。棧是自動分配相對固定大小的記憶體空間,並由系統自動釋放.
JS的資料型別
- 基本資料型別
Undefined、Null、Boolean、String、Number、Symbol都是直接按值直接存在棧中,每種型別的資料佔用的記憶體空間大小都是固定的,並且由系統自動分配自動釋放 - 引用資料型別
Object,Array,Function這樣的資料存在堆記憶體中,但是資料指標是存放在棧記憶體中的,當我們訪問引用資料時,先從棧記憶體中獲取指標,通過指標在堆記憶體中找到資料
以程式碼為例:
let arr_origin = [1,2,3,4,5];
let arr_copy = arr_origin;
let arr2 = arr_origin[2];
如果執行下面程式碼:
arr_copy[1] = 'change1';
arr2 = ‘change2’
我們發現arr_origin中的下標是1的值變成可change1,但是下標是2的值並未變化。原因是:arr_copy是arr_origin棧指標的引用,並未開闢新的記憶體空間,但是arr2是在棧記憶體中獨立存在,所以會產生上述結果。熟悉此原理,則資料的深淺拷貝就不難理解了!
相關文章
- (js佇列,堆疊) (FIFO,LIFO)JS佇列
- JS 資料型別和堆疊JS資料型別
- java堆疊Java
- 堆疊圖
- 平衡堆疊
- JS中堆疊記憶體的練習JS記憶體
- 如何優雅地檢視 JS 錯誤堆疊?JS
- 圖的深度優先遍歷[非堆疊、堆疊實現]
- 記憶體堆疊記憶體
- 堆疊的工作原理
- C#堆疊(Stack)C#
- [JVM工具(1)] 堆疊檢查利器jstat的使用JVMJS
- C#中堆和堆疊的區別C#
- [golang]如何看懂呼叫堆疊Golang
- 華為裝置堆疊原理
- Thrift的網路堆疊
- C++堆疊詳解C++
- 泛型鏈式堆疊泛型
- 第六講 堆疊操作
- 益智補劑:Stamets堆疊
- Photopile JS – 幫助你實現精緻的照片堆疊效果JS
- 圖的深度優先遍歷(堆疊實現和非堆疊實現)
- RapidJSON 程式碼剖析(一):混合任意型別的堆疊APIJSON型別
- junkman 遠端堆疊監控
- 什麼是網路堆疊?
- Java 堆疊記憶體分配Java記憶體
- iOS crash 日誌堆疊解析iOS
- z-index堆疊規則Index
- StackOverflowError堆疊溢位錯誤Error
- CSS之定位和堆疊屬性CSS
- SQL隱碼攻擊-堆疊注入SQL
- Java堆疊的區別有哪些Java
- QT分局管理:堆疊窗體(三)QT
- 如何:強化TCP/IP堆疊安全TCP
- 【原創】命令堆疊(二十七)
- android I/DEBUG堆疊資訊Android
- echarts 堆疊面積階梯圖Echarts
- 虛擬地址空間,堆疊,堆,資料段,程式碼段