引用資料型別中淺拷貝與深拷貝的區別

2022-09-11 08:57:15 字數 751 閱讀 8310

淺拷貝直接賦值賦值的是記憶體位址,賦值之後兩個變數使用的相同內容,兩個變數中儲存的是相同的記憶體位址,乙個操作,另乙個也會改變。

arr1 變數中 儲存的是 陣列的 記憶體位址

var arr1 = [1,2,3,4,5];

將arr1 儲存的記憶體位址,賦值給arr2,兩個變數儲存的是相同的記憶體位址

var arr2 = arr1;

arr1操作,陣列,arr2也會改變

因為arr1和arr2,同時儲存的是相同的資料,操作的也是同乙個陣列

同理,arr2,運算元組,arr1也會改變

arr1[0] = '北京';

console.log(arr2);

輸出結果為北京,2,3,4,5

深拷貝迴圈遍歷,獲取引用資料型別中,儲存的每乙個資料資訊賦值到新的變數中,賦值之後 兩個變數,沒有任何關係。

var arr3 = ['北京','上海','廣州','重慶','天津'];

迴圈遍歷,獲取arr3中的所有資料數值,賦值到新的陣列中

var arr4 = ;

通過迴圈,生成arr3的所有索引下標

for(var i = 0 ; i <= arr3.length-1 ; i++)

console.log(arr4);

arr3[0] = '武漢';

console.log(arr3 , arr4);

輸出結果為:arr3:武漢,上海,廣州,重慶,天津。

arr4:北京,上海,廣州,重慶,天津。

引用資料型別的淺拷貝與深拷貝

基本的資料型別可以分為兩類 基本資料型別 值型別 數字 字串 布林值 undefined null 引用資料型別 引用型別 函式 陣列 物件 只有複雜資料型別 引用資料型別 才有淺拷貝與深拷貝 基本資料型別資料傳遞後,在改變源資料後面不會改變 基本資料型別存的是值 引用資料型別存的是位址 引用資料型...

深拷貝 淺拷貝 資料型別

1 不可變型別 包括數值 字串 元組 不可變指的是不能改變引用,只能放置乙個新的引用 2 可變型別 包括列表和字典 可變指的是當向列表或字典裡面增刪改時,引用沒有受到影響 進一步解釋可變與不可變,是指記憶體中的那塊內容 value 是否可以被改變。如果是不可變型別,在對物件本身操作的時候,必須在記憶...

集合資料型別,拷貝,深拷貝,淺拷貝

用 中間值用,隔開,且集合中元素排列是無序的,而且如果有相同元素會只保留乙個 1.必須掌握 1.長度len set 1 print len set 1 52.成員運算in和not in 表示判斷集合裡面是否有某個值 set 1 print 1 in set 1 true print 100 in s...