[JS] 객체 참조와 복사

KJA·2022년 7월 6일
0

참조 (reference)

const a = {
    name: '김철수',
};
const b = a;
a.name = 'hero';
console.log(b.name); // hero

변수 ba를 대입합니다. a 변수의 name 속성 값을 변경했는데, b 변수도 같이 변경됐습니다. 객체를 저장한 변수를 다른 변수에 대입하면 두 변수 모두 같은 객체를 저장하는 셈이 됩니다. ab 변수 모두 같은 객체를 저장하고 있는 것이므로 객체의 속성 값을 바꾸면 변수 ab 모두 바뀌는 것처럼 보입니다. 이러한 상황일 때 변수 ab가 같은 객체를 참조 하고 있다고 표현합니다. 또는 ab 그리고 객체 간에 참조 관계가 있다 고 표현합니다.

복사(copy)

let a = '김철수';
let b = a;
a = 'hero';
console.log(b); // '김철수'

다만 객체가 아닌 값(문자열, 숫자, 불 값, null, undefined) 의 경우는 조금 다릅니다. 값은 메모리가 아닌 다른 공간(?)에 저장된다고 보면 됩니다.
이전 예제와 같이 변수 ba를 대입했습니다. 하지만 a를 바꿨는데도 b는 영향을 받지 않습니다. 객체가 아닌 값을 변수에 저장한 경우에는 참조 관계가 생기지 않기 때문입니다. 이렇게 참조가 생기지 않는 상황을 복사(copy)라고 부릅니다. 객체를 변수에 담으면 참조 관계가 생긱다는 것을 기억하세요!

0개의 댓글