JS 深入瞭解深拷貝和淺拷貝的區別,實現一個簡單的深拷貝(基礎篇)

壹 ❀ 引

深淺拷貝屬於js中一個比較基礎但重要的概念,日常開發中很多地方都會需要使用到深拷貝,在操作數據時,我們都應該潛意識的思考是否會對原數據造成影響。而且在面試時,我也遇到過如何實現一個深拷貝,需要註意哪些邊界情況的問題,對於初學者而言,瞭解這個概念是非常有必要的。

本文是我在17年剛從事前端不久時所寫的一篇文章,我覺得作為基礎入門去瞭解深拷貝的概念還挺不錯,所以決定遷移過來,至於從零手寫一個實用的深拷貝,我決定再開一篇文章,那麼本文開始。

貳 ❀ 深拷貝與淺拷貝的區別

如何區分深拷貝與淺拷貝,簡單點來說,就是假設B復制瞭A,當修改A時,看B是否會發生變化,如果B也跟著變瞭,說明這是淺拷貝,拿人手短;如果B沒變,那就是深拷貝,自食其力。

此篇文章中也會簡單闡述到棧堆,基本數據類型與引用數據類型,因為這些概念能更好的讓你理解深拷貝與淺拷貝。

我們來舉個淺拷貝例子:

let a=[0,1,2,3,4],
b=a;
console.log(a===b);
a[0]=1;
console.log(a,b);

赞(0)