這是我來掘金的第一篇文張 寫文章一直不是個人強項 本文章是我我的的理解 深拷貝淺拷貝大多數是看博客看出來的
其實這東西的本質就是指針javascript
前端的話 不多看到用指正來解釋 深拷貝 淺拷貝 應爲 學過c語言 低級語言纔有的指針前端
#include <stdio.h> //聲明頭
void sum(int a, int b, int *c); // 頭文件
int main(void){
int c = 0; // 聲明變量c
sum(1, 2, &c); // (int a 這個是數字, int b這個是數字, int *c這個是數字指針)
printf("%d\n", c); // 輸出這個c
/* 用js翻譯 let c = 0; sum(1, 2) // == 3 console.log(c) // == 0 <---->寫個斷點 */
return 0;
}
void sum(int a, int b, int *c){ // 我沒有返回任何值
*c = a + b;
}
/* 用js翻譯 function(a, b){ return a + b; } */
複製代碼
我寫文章真的很差 吐槽一下本身 我後面改進一下文筆哎java
爲何要用c語言來解釋咱們來看一段代碼ui
const a = {}
console.log(a) // a {}.x
console.log(a.x) // undefined
function hah(a){
a.x = 3
}
hah(a)
console.log(a.x)
// 補充一個知識點 console = 快照 無論在哪裏 都會輸出的
複製代碼
console但願你們瞭解這東西spa
爲何會這樣 應爲 a是指針和上面那個c語言同樣翻譯
{} // 內存地址 改的是內存 不是數值指針
我建立了一個內存地址code
0xasdkfjajshdfk 裏面存的也是地址 0xasdkfjajshdfk 存 不是值 是地址 0x21321rahfajsg 你改內存了 不改值cdn
因此纔會要拷貝blog
你問要怎麼拷貝啊 這簡單
const a = {}
const b = {}
console.log(a)
console.log(a.x)
function hah(a){
a.x = 3
}
hah(a)
hah(b)
console.log(a.x)
複製代碼
新內存.b
這個就是拷貝原理 懂了以後能寫出更多的拷貝
我發現這樣寫文章有毒 當是仍是發了 我先組織好語言 😭