1. 程式人生 > 實用技巧 >javascript的棧和堆

javascript的棧和堆

1、編譯時會給不同資料型別分配記憶體:棧記憶體和堆記憶體

棧記憶體主要儲存基本資料型別:Boolean、Number、String、Undefined、Null,以及儲存物件變數的指標。

堆記憶體主要儲存引用資料型別:Object,Array,Function。

棧和堆的區分,是為了程式更好的執行,棧區存放的變數隨著方法的呼叫結束會被銷燬,堆區存放的物件可能被多處引用,只有當徹底沒有被引用時,系統的垃圾回收機制才會釋放它。

全域性變數直到頁面解除安裝時,才會被銷燬,所以儘可能減少堆記憶體資料賦值給全域性變數。

賦值和賦址分別就是對應棧和堆的關係,賦值:賦基本型別值-拷貝一份基本型別值;賦址:賦相同指標指向關係-拷貝一份指標。

2、JavaScriptnew關鍵字建立的是一個物件:

var a = new String('123') var b = String('123') a==b a!==b

new String得到的是個包裝的字串物件

new通常用於建構函式:

functionWho(){}

varme=newWho()

這時生成的是一個新函式,有單獨的堆記憶體