[JavaScript] 얕은 복사 / 깊은 복사

조은·2022년 11월 28일

자바스크립트에서의 복사는 얕은 복사깊은 복사 가 존재한다.

간단하게,

원시타입은 복사(깊은복사)가 되고, 원시타입을 제외한 객체들(참조타입)은 참조(얕은복사)가 된다.

깊은 복사

let a = 1;
let b = a;

console.log(a); // 1
console.log(b); // 1

a = 2;
console.log(a) // 2
console.log(b) // 1

a에는 원시타입의 변수가 할당됐고,
b는 a의 값을 복사해서 할당했다.

원시타입의 특성상 복사할 때 b의 독립적인 메모리 공간을 할당해주기 때문에,
a의 값을 변경(재할당)해도 그의 복사본(b)에는 영향이 가지 않는 것이다.



얕은 복사

let a = { name: 'Park'};
let b = a; // 참조값 복사

console.log(a); //{name: "Park"}
console.log(b); //{name: "Park"}

a.name = 'Kim';

console.log(a); //{name: "Kim"}
console.log(b); //{name: "Kim"}

이번에는 a를 객체, 즉 참조값 변수로 선언했다.
이 경우 a를 복사한 b는 a와 같은 주소를 가지게 된다.

따라서 둘 중 하나의 값만 변경해도 둘 다 수정된다.

profile
끄적끄적....

0개의 댓글