引用型別及深拷貝

2021-10-05 15:10:49 字數 890 閱讀 9181

js中的資料型別--

值型別:字串(string)、數值(number)、布林值(boolean)、undefined、null、symbol

引用型別:物件(object)、陣列(array)、函式(function)

變數賦值--

當儲存的是值型別的變數來賦值時,是複製乙個副本;當儲存的是引用型別的變數來賦值時,傳遞的是乙個記憶體位址。

淺拷貝--

let aa = [1,2,3];

let bb = [...aa];

let cc =

let dd =

let newobj = object.assign({},obj)

深拷貝--(比如乙個物件中某個屬性的值仍是乙個引用型別的資料(物件、陣列),這時候就要用到深拷貝了)(需要用遞迴實現)

function copy(obj)

let arr = object.entries(obj)

for(let [key,value] of arr)

return res

}let aa = copy(obj);

注意:對值型別的陣列進行迴圈操作,不會改變原陣列,對引用型別的陣列進行迴圈操作會改變原陣列

let aa = [1,2,3]

aa.foreach(item=>)

console.log(aa);//沒有改變

let bb = [,,

,]bb.foreach(item=>)

console.log(bb);//改變了

python 引用,淺拷貝,深拷貝

引用 當物件是不可變型別的時候,int float double string tuple 純tuple 遇到 引用 問題時,雖然起初兩個變數指向同乙個記憶體位址,但是改變了其中乙個值,並不會影響另外乙個 會重新開闢記憶體位址 當物件是可變型別的時候,list dic,遇到 引用 問題,會一直共享一...

Python深拷貝 淺拷貝 引用

列表巢狀 如果想拷貝之後賦值的變數不想影響之前的列 表變數import copy 反之copy usr bin env python coding utf 8 author mxl time 2020 3 17 import copy a 1,2,3 b a a print a的初始值為 str a...

Python引用 淺拷貝 深拷貝

1 概念 深拷貝 將父和子的值都進行傳遞,無論怎麼去修改源變數,深拷貝的變數都和源變數無關 2 引用 我們建立乙個變數a,通過引用將a賦值給變數b,使用id 檢視變數位址,a與b得位址一致,可見兩者此時指向同意記憶體位址,當我們改變a得值時,b得值也會變化。引用示例 a 1 b a print id...