摘要:前言中的類型只有種,其中基本數據類型有種分別為,引用類型有一種,就是,是一個大的綜合體,在中除了那個基本數據類型以外,其他的一切皆對象。
前言
JS中的類型只有6種,其中基本數據類型有5種分別為string,number,boolen,null,undefined,引用類型有一種,就是object,object是一個大的綜合體,在JS中除了那5個基本數據類型以外,其他的一切皆對象。正文 兩個對比的例子
var a = 100; var b = a; a++ console.log(a)//101 console.log(b)//100
var obj1 = new object(); var obj2 = new object(); obj1.age = 18; obj2 = obj1; obj1.age++ console.log(obj1.age)//19 console.log(obj2.age)//19
??可以看到上面兩個例子都是改變了值,基本數據類型是被賦值的不會變,而引用的是被賦值的也會隨之發生改變,那么這是為什么呢?其實很簡單,一句話就可以概括:因為基本數據類型保存的是值,而引用類型保存的是地址。
解釋例子??創建一個新的變量時,會將它存放在棧中,如果是對象的話,就會在另外的更大的堆中劃分一片區域,那么在棧中該對象存放的就是在堆中的地址。
如上圖,基本數據類型是直接在棧中存放值的,當a發生變化的時候,b不會發生變化,因為b只是等于a的值,和a沒有什么關系。
??在obj1和obj2中存放的都是地址,obj2不是等于obj1的值,而是等于obj1在堆中存放的地址,所以當地址中的內容發生變化時,obj2的內容也會發生變化。只要創建一個新的對象,在堆中就會開辟一個新的區域去存放對象的屬性和方法等內容。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97761.html
摘要:那么如何切斷和之間的關系呢,可以拷貝一份的數據,根據拷貝的層級不同可以分為淺拷貝和深拷貝,淺拷貝就是只進行一層拷貝,深拷貝就是無限層級拷貝。 深拷貝 vs 淺拷貝 深拷貝和淺拷貝都是針對的引用類型,JS中的變量類型分為值類型(基本類型)和引用類型;對值類型進行復制操作會對值進行一份拷貝,而對引用類型賦值,則會進行地址的拷貝,最終兩個變量指向同一份數據。 // 基本類型 var a = ...
摘要:實際上,是禁止這樣做的。傳值和傳址基本數據類型賦值基本數據類型的賦值是在內存中新開辟一段棧內存,然后再把再將值賦值到新的棧中。結果見輸出,可以看出來,無論是修改賦值得到的對象和淺拷貝得到的都會改變原始數據。 存儲問題:深拷貝和淺拷貝的主要區別:在內存中的存儲類型(堆和棧)不同堆:動態分配的內存,大小不定也不會自動釋放棧:自動分配的內存,由系統自動釋放數據類型: 基本數據類型: jav...
摘要:四是在年出的持久性數據結構的庫,持久性指的是數據一旦創建,就不能再被更改,任何修改或添加刪除操作都會返回一個新的對象。避免大量使用操作,這樣會浪費性能。盡量將設計成扁平狀的。 一、痛點 在我們的印象中,React 好像就意味著組件化、高性能,我們永遠只需要關心數據整體,兩次數據之間的 UI 如何變化,則完全交給 React Virtual Dom 的 Diff 算法 去做。以至于我們很...
閱讀 1211·2023-04-26 02:20
閱讀 3337·2021-11-22 14:45
閱讀 4111·2021-11-17 09:33
閱讀 972·2021-09-06 15:00
閱讀 1479·2021-09-03 10:30
閱讀 3837·2021-07-26 22:01
閱讀 990·2019-08-30 15:54
閱讀 531·2019-08-30 15:43