js的數據類型有基本類型和引用類型
1.基本數據類型(BS3N)
1.Boolean(B)
2.String(S)
3.underfined(N)
4.Null(N)
5.Number(N)
6.symbol(ES6的)
基本數據類型都儲存在棧中(stack),棧是有結構的,每個區塊都是按照後進先出的方式次序存放,基本類型的數據相對是比較穩定的,佔的內存也比較小,所有尋找速度比較快,如果基本類型複製的話,棧中重新開闢個新的內存空間來儲存新複製的新值,所以兩者是獨立的,沒有任何關聯!
2.引用數據類型(複雜類型)
1.Array
2.Object
堆是沒有結構的,數據可以任意存放,引用類型的值是儲存在堆中(heap),但是棧內存中保存着一個堆內存的對象的引用,所以我們常常實際操作的是引用而不是操作實際的對象!你可以這麼理解,棧中保存着一個地址,這個地址指向堆中的對象,如果複製的是引用類型,那麼複製的是棧內存中的引用地址,兩個引用地址指向的還是同一個對象!
3.爲什麼基本數據類型存在棧中,而引用數據類型存在堆中呢?
1.基本數據類型比較穩定,大小基本是固定的,佔用的內存比較小
2.堆比棧大,棧的速度比隊快
3.堆是無序的,棧的有序的
4.引用數據類型的大小的不可控的,動態的,所以儲存在堆中