const a = {
name: '김철수',
};
const b = a;
a.name = 'hero';
console.log(b.name); // hero
변수 b에 a를 대입합니다. a 변수의 name 속성 값을 변경했는데, b 변수도 같이 변경됐습니다. 객체를 저장한 변수를 다른 변수에 대입하면 두 변수 모두 같은 객체를 저장하는 셈이 됩니다. a와 b 변수 모두 같은 객체를 저장하고 있는 것이므로 객체의 속성 값을 바꾸면 변수 a와 b 모두 바뀌는 것처럼 보입니다. 이러한 상황일 때 변수 a와 b가 같은 객체를 참조 하고 있다고 표현합니다. 또는 a와 b 그리고 객체 간에 참조 관계가 있다 고 표현합니다.

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