ES的數據類型: 原始類型(值存在棧記憶體中): Number、String Boolean、undefined、null charAt(index)返回該index所在的位元組,charCodeAt(index)返回該index所在位元組的Unicode值。 undefined和null不能和數字進行比 ...
ES的數據類型:
原始類型(值存在棧記憶體中): Number、String Boolean、undefined、null
charAt(index)返回該index所在的位元組,charCodeAt(index)返回該index所在位元組的Unicode值。
undefined和null不能和數字進行比較。
引用類型(值存在堆記憶體中): Object、Function、Array、Date、Math、RegExp ...
______________________________________________________________________________________
堆(heap)和棧(stack)
棧記憶體:
將棧當做一棟房子,房子裡面有很多房間,此時的房間名為系統定義的二進位數字,
當聲明一個變數(變數聲明永遠在棧中,與賦的值無關)時棧為它分配一個房間,房間名為變數名,
當未賦值時,房間裡面系統預設放undefined,當變數賦原始類型值時,房間內放該原始值,
當變數賦引用類型時,房間內放置該引用值在堆中的地址。
棧的特性:先進去的東西後出來,後進去的東西先出來。
堆記憶體:
堆記憶體也可以看做一個房子,堆記憶體的房間放的是引用類型的值的集合,而指向該房間的地址存放在棧記憶體的房間里。
原始值具有不可改變的特性:
比如將一個原始值放在一個房間里時,該值就不能再取出來了,
除非棧記憶體滿了,它的值就會被新的值覆蓋,這種方式稱為形成二次覆蓋。
若棧記憶體沒滿,當一個變數再次賦值時,該變數就會脫離原來的房間,去占據下一個房間,並把新賦的值放進去。
舊值的房間名就再次變成了棧記憶體的一串標準數字。
棧記憶體中賦值屬於拷貝: 拷貝的是一個原始值或引用地址。