1种樱、關于數(shù)據(jù)結構
? ? ? ? (1)棧數(shù)據(jù)結構
? ? ? ? ?棧數(shù)據(jù)結構的特點是先進后出浆竭,后進先出艾栋。類比于乒乓球盒子俺叭。
? ? ? ? (2)堆數(shù)據(jù)結構
? ??????堆數(shù)據(jù)結構是一種樹狀結構谨究。類似于JSON的key-value形式菇怀,無需知道存儲順序咕痛,只要識別鍵名就可以獲取屬性值麻惶。
? ? ? ? (3)隊列
????????????隊列是一種先進先出的數(shù)據(jù)格式,類似于安檢宪拥。
2仿野、變量對象與基礎數(shù)據(jù)類型
????????js的執(zhí)行上下文生成完成之后會創(chuàng)建一個叫做變量對象的特殊對象,js的基礎數(shù)據(jù)類型都存儲在這個特殊對象中她君。目前javascript中共有6種基礎數(shù)據(jù)類型脚作,分別是Number、String缔刹、Boolean球涛、null、undefined以及ES6新增的Symbol校镐。
3亿扁、引用數(shù)據(jù)類型與堆內存
? ??? ? js的引用數(shù)據(jù)類型(數(shù)組、函數(shù)鸟廓、對象)大小不固定从祝,引用數(shù)據(jù)類型的值是保存在堆內存中的對象。JavaScript不允許直接訪問堆內存中的位置引谜,因此我們不能直接操作對象的堆內存空間牍陌。在棧中會存儲一個指向堆內存對象的指針,因此每次引用數(shù)據(jù)類型的改變實際上就是指針的改變煌张。
4呐赡、內存空間管理
? ? ? ? javascript的生命周期: 分配需要的內存、使用分配到的內存骏融、將不再試用的內存釋放链嘀。
????????js的標記清除是最常使用的垃圾回收機制,在局部作用域中档玻,當函數(shù)執(zhí)行完畢怀泊,局部變量也就沒有存在的必要了,因此垃圾收集器很容易做出判斷并回收误趴。但是全局變量什么時候需要自動釋放內存空間則很難判斷霹琼,因此在我們的開發(fā)中,需要盡量避免使用全局變量凉当。