1. 程式人生 > >ES之值類型以及堆和棧

ES之值類型以及堆和棧

以及 span arc nic ont 一個 永遠 cti 方式

ES的數據類型:
原始類型(值存在棧內存中): Number、String Boolean、undefined、null
charAt(index)返回該index所在的字節,charCodeAt(index)返回該index所在字節的Unicode值。
undefined和null不能和數字進行比較。


引用類型(值存在堆內存中): Object、Function、Array、Date、Math、RegExp ...
______________________________________________________________________________________
堆(heap)和棧(stack)


棧內存:
將棧當做一棟房子,房子裏面有很多房間,此時的房間名為系統定義的二進制數字,
當聲明一個變量(變量聲明永遠在棧中,與賦的值無關)時棧為它分配一個房間,房間名為變量名,
當未賦值時,房間裏面系統默認放undefined,當變量賦原始類型值時,房間內放該原始值,
當變量賦引用類型時,房間內放置該引用值在堆中的地址。
棧的特性:先進去的東西後出來,後進去的東西先出來。

堆內存:
堆內存也可以看做一個房子,堆內存的房間放的是引用類型的值的集合,而指向該房間的地址存放在棧內存的房間裏。

原始值具有不可改變的特性:
比如將一個原始值放在一個房間裏時,該值就不能再取出來了,
除非棧內存滿了,它的值就會被新的值覆蓋,這種方式稱為形成二次覆蓋。
若棧內存沒滿,當一個變量再次賦值時,該變量就會脫離原來的房間,去占據下一個房間,並把新賦的值放進去。
舊值的房間名就再次變成了棧內存的一串標準數字。

棧內存中賦值屬於拷貝: 拷貝的是一個原始值或引用地址。

ES之值類型以及堆和棧